Ir para conteúdo

POWERED BY:

Arquivado

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

Fernando José

[Resolvido] Agrupando array e explode

Recommended Posts

Olá,

 

Pessoal, tenho uma tabela representantes no banco de dados, com os campos nome, telefone, uf e regiao. Dentro de região vai o nome das cidades separadas por ",". Ex: São Paulo,São Caetano,São Pedro

 

Preciso jogar todas as cidades em um array para depois gerar um select no html. Tentei algo assim, mas não funcionou.

 

$sqlCidade = "select regiao from representantes where uf = '$uf' and ativo = 'S'";
$tabelaCidade = mysql_query($sqlCidade);
while($linhaCidade = mysql_fetch_array($tabelaCidade))
{
	$cidade = $linhaCidade['regiao'];
	$temp2 = $temp;
	$temp = explode(",", $cidade);
	$final = array_merge($temp,$temp2);
}

Preciso saber o nome de todas as cidades de todos os representantes, para gerar o select de cidades com o nome das cidades que tem representantes.

 

Alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

array_merge junta dois arrays

nao testei a sintaxe, mas seria assim +-

 

<?php
	$string = 'São Paulo,São Caetano,São Pedro'; // sua string que vai vir do banco com os locais separados por virgula
	$arr = explode( ',', $string ); // criamos o array com os locais aqui
	/* 
	* "for each" em inglês significa "pra cada" 
	* é uma estrutura de controle que executa uma açao pra cada posiçao de um array
	* nós temos um array onde cada posição é um local, agora é só manipular
	*/
	foreach ( $arr as $local )
		echo '<option value="', $local, '">', $local, '</option>';

Compartilhar este post


Link para o post
Compartilhar em outros sites

quem sabe isso serve

 

echo "<select ID='cidades' NAME='cidades'>";
$sqlCidade = "select regiao from representantes where uf = '$uf' and ativo = 'S'";
$tabelaCidade = mysql_query($sqlCidade);
$item=0;
while($linhaCidade = mysql_fetch_array($tabelaCidade)){     
   
    $cidade = $linhaCidade['regiao'];
    foreach (explode(',',$cidade) as $cidades){
         echo "<OPTION VALUE=".$item.">".$cidades."</OPTION>";
         $item++;
    }
}
echo "</select>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera está quase, com base no que me enviaram fiz isso:

 

$sqlCidade = "select regiao from representantes where uf = '$uf' and ativo = 'S'";
	$tabelaCidade = mysql_query($sqlCidade);
	$total = mysql_num_rows($tabelaCidade);
	$i = 0;
	while($linhaCidade = mysql_fetch_array($tabelaCidade))
	{
		
		$cidade .= $linhaCidade['regiao'];
		$cidade .= ",";	
		if($total > $i)
		{
			$cidade .= ",";	
		}
		$i++;
	}
	
	$cidades = explode(",", $cidade);
	
	sort($cidades); // Ordena
	$final = array_unique($cidades); // Remove o valores duplicados

Agora preciso tirar do array os elementos em branco e tambem, queria dar um trim() linha por linha, porque alguns tem espaços no inicio e final da string.

 

Valewwww

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

 

$sql = "select regiao from representantes where uf = '$uf' and ativo = 'S'";
$result = mysql_query($sqlCidade);

if ( $result ){
	$cidades = array();

	while ( ( $linha = mysql_fetch_array( $result ) ) !== false ){
	 	$cidades = array_unique( array_merge( $cidades , preg_split( '/\s*,\s*(,\s*)*/' , $linha[ 'regiao' ] ) ) );
	}

	sort( $cidades ); // Ordena
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito, muito obrigado galera!!!

 

Tenta assim:

 

$sql = "select regiao from representantes where uf = '$uf' and ativo = 'S'";
$result = mysql_query($sqlCidade);

if ( $result ){
	$cidades = array();

	while ( ( $linha = mysql_fetch_array( $result ) ) !== false ){
	 	$cidades = array_unique( array_merge( $cidades , preg_split( '/\s*,\s*(,\s*)*/' , $linha[ 'regiao' ] ) ) );
	}

	sort( $cidades ); // Ordena
}

 

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.