Ir para conteúdo

POWERED BY:

Arquivado

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

Elienai Pires da Rosa

[Resolvido] Consulta Mysql com array

Recommended Posts

Olá pessoal!

 

Tenho uma pagina que me traz uma consulta de mysql em array e com esses dados preciso efetuar uma nova consulta, porém ao fazer a busca o sistema só verifica a ultima palavra do array. Já efetuei vários testes mas não consegui descobrir onde esta o erro, se alguém puder me ajudar, agradeço!

 

<?
include "config.php";

	$nome_do_usuario = '';

		$resultado = mysql_query("Select * from amigos WHERE `usuario`='$nome_do_usuario'", $db);
  		while ($linh = mysql_fetch_array($resultado)){					
				$amigos1 = $linh[2];
				echo $amigos1."<br/>";}

				echo '<hr/>';

  		$resultado = mysql_query("Select * from amigos WHERE `amigo`='$nome_do_usuario'", $db);
  		while ($linh = mysql_fetch_array($resultado)){					
				$amigos2 = $linh[1];
				echo $amigos2."<br/>";}

				echo '<hr/>';

	$resultado = mysql_query("Select * from usuarios WHERE `usuario`=('$amigos2') || `usuario`=('$amigos1') ", $db);
       $contagem = mysql_num_rows($resultado);

				echo $contagem.'<br/>';
				echo '<hr/>';

	while ($linh = mysql_fetch_array($resultado))
	{
				$amigos1 = $linh[3];
				echo $amigos1."<br/>";}


?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

 

Amigo poste sua tabela que fica mais fácil. E acho que a sua dúvida é de PHP.

 

Entretanto, pelo que entendi na terceira consulta ele está usando apaenas a última palavra que pesquisou né?

 

É que você está mandando ele comparar o campo 'usuario' com a variável $amigos1 e $amigos2. O que acontece é o seguinte, acompanhe o teste de mesa:

 

Fez a primeira consulta, retornou três resultados: João, Maria, José.

___Aí tem o primeiro looping

______A variável $amigos1 vai receber 'João'.

______A variável $amigos1 vai receber 'Maria'.

______A variável $amigos1 vai receber 'José'.

___Fim do looping, a variável $amigos1 está com o valor 'José'.

 

Fez a segunda consulta, retornou dois resultados: Ricardo, Rodrigo.

___Segundo looping

______A variável $amigos2 vai receber 'Ricardo'.

______A variável $amigos2 vai receber 'Rodrigo'.

___Fim do looping, a variável $amigos2 está com o valor 'Rodrigo'.

 

Ao executar a terceira e última consulta, você está usando as variáveis que tem como valor 'José' e 'Rodrigo'. Veja:

 

Isso: Select * from usuarios WHERE `usuario`=('$amigos2') || `usuario`=('$amigos1') , se torna:

_____ Select * from usuarios WHERE `usuario`=('Rodrigo') || `usuario`=('José')

 

Foi um simples erro de lógica amigo.

 

Entretanto, não sei se é possível executar uma consulta usando um array no PHP. Se for, desconheço a maneira.

 

Você pode executar um looping para montar uma string com todos os nomes separados por vírgula, seu código ficaria mais ou menos assim:

 

$nome_do_usuario = '';

// Variáveis $a e $b que vamos usar para montar a string
$a = '';
$b = '';

$resultado = mysql_query("Select * from amigos WHERE `usuario`='$nome_do_usuario'");
   while ($linh = mysql_fetch_array($resultado)){                                  
       $amigos1 = $linh[2];
       $a = $a."'".$amigos1."',"; // Aqui vamos "emendar" todos os nomes numa string
       echo $amigos1."<br/>";
   }
   echo '<hr/>';

$resultado = mysql_query("Select * from amigos WHERE `amigo`='$nome_do_usuario'");
   while ($linh = mysql_fetch_array($resultado)){                                  
       $amigos2 = $linh[1];
       $b = $b."'".$amigos2."',"; // Aqui vamos "emendar" todos os nomes numa string
       echo $amigos2."<br/>";
   }
   echo '<hr/>';

// Nessas duas linhas abaixo usamos a função substr() para remover a última vírgula que sobra, pra não dar erro na query
$a = substr($a,0,((strlen($a))-1));
$b = substr($b,0,((strlen($B))-1));

// Então você usa o comando IN, pra dizer que sua coluna 'usuario' pode ser qualquer um dos nomes apendados.
$resultado = mysql_query("Select * from usuarios WHERE `usuario IN ($a) || `usuario` IN ($B) ");
$contagem = mysql_num_rows($resultado);

echo $contagem.'<br/>';
echo '<hr/>';

   while ($linh = mysql_fetch_array($resultado)){
       $amigos1 = $linh[3];
       echo $amigos1."<br/>";
   }

 

Desculpe se tiver erros de sintaxe, não pude testar pois não tenho a tabela. Mas é mais ou menos isso.

 

Qualquer dúvida posta aí.

 

Falow.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

 

Amigo poste sua tabela que fica mais fácil. E acho que a sua dúvida é de PHP.

 

Entretanto, pelo que entendi na terceira consulta ele está usando apaenas a última palavra que pesquisou né?

 

É que você está mandando ele comparar o campo 'usuario' com a variável $amigos1 e $amigos2. O que acontece é o seguinte, acompanhe o teste de mesa:

 

Fez a primeira consulta, retornou três resultados: João, Maria, José.

___Aí tem o primeiro looping

______A variável $amigos1 vai receber 'João'.

______A variável $amigos1 vai receber 'Maria'.

______A variável $amigos1 vai receber 'José'.

___Fim do looping, a variável $amigos1 está com o valor 'José'.

 

Fez a segunda consulta, retornou dois resultados: Ricardo, Rodrigo.

___Segundo looping

______A variável $amigos2 vai receber 'Ricardo'.

______A variável $amigos2 vai receber 'Rodrigo'.

___Fim do looping, a variável $amigos2 está com o valor 'Rodrigo'.

 

Ao executar a terceira e última consulta, você está usando as variáveis que tem como valor 'José' e 'Rodrigo'. Veja:

 

Isso: Select * from usuarios WHERE `usuario`=('$amigos2') || `usuario`=('$amigos1') , se torna:

_____ Select * from usuarios WHERE `usuario`=('Rodrigo') || `usuario`=('José')

 

Foi um simples erro de lógica amigo.

 

Entretanto, não sei se é possível executar uma consulta usando um array no PHP. Se for, desconheço a maneira.

 

Você pode executar um looping para montar uma string com todos os nomes separados por vírgula, seu código ficaria mais ou menos assim:

 

$nome_do_usuario = '';

// Variáveis $a e $b que vamos usar para montar a string
$a = '';
$b = '';

$resultado = mysql_query("Select * from amigos WHERE `usuario`='$nome_do_usuario'");
   while ($linh = mysql_fetch_array($resultado)){                                  
       $amigos1 = $linh[2];
       $a = $a."'".$amigos1."',"; // Aqui vamos "emendar" todos os nomes numa string
       echo $amigos1."<br/>";
   }
   echo '<hr/>';

$resultado = mysql_query("Select * from amigos WHERE `amigo`='$nome_do_usuario'");
   while ($linh = mysql_fetch_array($resultado)){                                  
       $amigos2 = $linh[1];
       $b = $b."'".$amigos2."',"; // Aqui vamos "emendar" todos os nomes numa string
       echo $amigos2."<br/>";
   }
   echo '<hr/>';

// Nessas duas linhas abaixo usamos a função substr() para remover a última vírgula que sobra, pra não dar erro na query
$a = substr($a,0,((strlen($a))-1));
$b = substr($b,0,((strlen($B))-1));

// Então você usa o comando IN, pra dizer que sua coluna 'usuario' pode ser qualquer um dos nomes apendados.
$resultado = mysql_query("Select * from usuarios WHERE `usuario IN ($a) || `usuario` IN ($B) ");
$contagem = mysql_num_rows($resultado);

echo $contagem.'<br/>';
echo '<hr/>';

   while ($linh = mysql_fetch_array($resultado)){
       $amigos1 = $linh[3];
       echo $amigos1."<br/>";
   }

 

Desculpe se tiver erros de sintaxe, não pude testar pois não tenho a tabela. Mas é mais ou menos isso.

 

Qualquer dúvida posta aí.

 

Falow.

 

 

Perfeito Diego, era isso mesmo, nem me liguei disso, funcionou certinho, muito obrigado! Um abraço!

Elienai

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.