Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

thiagocs

Array dentro de Array

Recommended Posts

Olá tenho 3 tabelas relacionadas, Localidades, Cidades e Bairros:

 

Localidades

id_localidade(PK) | nome_localidade

 

Cidades

id_cidade(PK) | id_localidade (FK) | nome_cidade

 

Bairros

id_bairro(PK) | id_localidade(FK) | id_cidade (FK) | nome_bairro

Gostaria de inserir tudo em arrays (podem ser associativos) para montar combos dinâmicos e depois ler por cada localidade, alguém sabe fazer isso?

 

Ex:

$listaBairros = array($id_bairro, $nome_bairro);

$listaCidades = array($id_cidade, $nome_cidade, $listaBairros);

$listaLocalidades = array($id_localidade, $nome_localidade, $listaCidades);

 

 

$sql = "SELECT id_localidade, nome_localidade FROM localidades ORDER BY nome_localidade ASC";		$resultado = mysql_query($sql);			while($r = mysql_fetch_array($resultado) ){						$sql2 = "SELECT id_cidade, nome_cidade FROM cidades WHERE id_localidade=".$r['id_localidade']." ORDER nome_cidade ASC";			$resultado2 = mysql_query($sql2);					while($r2 = mysql_fetch_array($resultado2){										$sql3 = "SELECT id_bairro, nome_bairro FROM bairros WHERE id_cidade=".$r2['id_cidade']." ORDER BY nome_bairro ASC ";				$resultado3 = mysql_query($sql3);				while($r3 = mysql_fetch_array($resultado3){					//insere												}					//insere					mysql_free_result($resultado3);										}			//insere			mysql_free_result($resultado2);							}		mysql_free_result($resultado);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui fazer o código abaixo mas o tamanho do array está maior que devia mesmo assim não consigo imprimir direito.

 

<?		include("abre_conexao.php");				$sql = "SELECT id_localidade, nome_localidade FROM localidades";		$resultado = mysql_query($sql);				$array = array();		$i=0;		while($r = mysql_fetch_array($resultado) ){					$sql2 = "SELECT id_cidade, nome_cidade FROM cidades WHERE id_localidade=".$r['id_localidade'];			$resultado2 = mysql_query($sql2);			$array2 = array();			$i2=0;			while($r2 = mysql_fetch_array($resultado2)){								$sql3 = "SELECT id_bairro, nome_bairro FROM bairros WHERE id_cidade=".$r2['id_cidade'];				$resultado3 = mysql_query($sql3);				$array3 = array();				$i3 = 0;				while($r3 = mysql_fetch_array($resultado3)){										array_push($array3,array($i3=>$r3["id_bairro"],$r3["nome_bairro"]));					$i3++;										}							mysql_free_result($resultado3);							array_push($array2, array($i2=>$r2['id_cidade'],$r2['nome_cidade'],$array3));				$i2++;				unset($array3);			}					mysql_free_result($resultado2);			array_push($array, array($i => $r['id_localidade'],$r['nome_localidade'], $array2 ));			$i++;			unset($array2);		}				mysql_free_result($resultado);				for($i=0; $i < count($array); $i++){			$arrayTemp = $array[$i];			echo $arrayTemp[0]." | ".$arrayTemp[1]."<br>\n";			if(is_array($arrayTemp[2])){				echo "<hr/>\n";				$array2 = $arrayTemp[2];								for($j=0; $j < count($array2); $j++){					$arrayTemp2 = $array2[$j]; 					echo "  - ".$arrayTemp2[0]." / ".$arrayTemp2[1]."<br>\n";					unset($arrayTemp2);				}													}			unset($arrayTemp);		}									include("fecha_conexao.php");?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que ainda naum entendi, por isso ninguem respondeu ainda tb. Tente explicar com outras palavras

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já consegui resolver.

 

<?		include("abre_conexao.php");				$sql = "SELECT id_localidade, nome_localidade FROM localidades";		$resultado = mysql_query($sql);				$array = array();		while($r = mysql_fetch_array($resultado) ){					$sql2 = "SELECT id_cidade, nome_cidade FROM cidades WHERE id_localidade=".$r['id_localidade'];			$resultado2 = mysql_query($sql2);			$array2 = array();			while($r2 = mysql_fetch_array($resultado2)){								$sql3 = "SELECT id_bairro, nome_bairro FROM bairros WHERE id_cidade=".$r2['id_cidade'];				$resultado3 = mysql_query($sql3);				$array3 = array();				while($r3 = mysql_fetch_array($resultado3)){										array_push($array3,array($r3["id_bairro"],$r3["nome_bairro"]));									}							mysql_free_result($resultado3);					array_push($array2, array($r2['id_cidade'],$r2['nome_cidade'],$array3));				unset($array3);			}					mysql_free_result($resultado2);			array_push($array, array($r['id_localidade'],$r['nome_localidade'], $array2 ));			unset($array2);		}				mysql_free_result($resultado);				/* Leitura dos Arrays */				for($i=0; $i < count($array); $i++){			$arrayTemp = $array[$i];			echo $arrayTemp[0]." | ".$arrayTemp[1]."<br>\n";					// verifica se tem cidades cadastradas			if(is_array($arrayTemp[2]) && count($arrayTemp[2]) > 0 ){								$array2 = $arrayTemp[2];								for($j=0; $j < count($array2); $j++){					$arrayTemp2 = $array2[$j]; 					echo "  - ".$arrayTemp2[0]." / ".$arrayTemp2[1]."<br>\n";										// verifica se tem bairros cadastradas					if(is_array($arrayTemp2[2]) && count($arrayTemp2[2]) > 0 ){												$array3 = $arrayTemp2[2];												for($t=0; $t < count($array3); $t++){							$arrayTemp3 = $array3[$t]; 							echo "        - ".$arrayTemp3[0]." -- ".$arrayTemp3[1]."<br>\n";														unset($arrayTemp3);						}														}																				unset($arrayTemp2);				}												}			unset($arrayTemp);				}									include("fecha_conexao.php");?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.