Ir para conteúdo

POWERED BY:

Arquivado

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

AprendIz_

Verificar se valor exibido existe em outra Tabela

Recommended Posts

Olá Pessoal,

Tenho um arquivo que lista produtos em uma tabela.

O que gostaria de fazer é pegar o valor ID de cada produto e verificar se ela existe em outra tabela e caso exista mostre um echo com uma Mensagem de registro existente.

 

Vou mostrar como montei o meu código.

Assim ele está apenas mostrando os produtos:

 

<?$host = "localhost"; $bd = "produtos"; $usuario = "root"; $senha = "senha"; $conexao = mysql_connect($host, $usuario, $senha); $banco = mysql_select_db($bd); $consulta= mysql_query("select * from produtos order by produtos_id");while($m_produto = mysql_fetch_array($consulta)){echo 'ID do Produto:'.$m_produto['produtos_id'];echo "<br>";}?>
O resultado está ficando assim:

ID do Produto:1

ID do Produto:2

ID do Produto:3

ID do Produto:4

ID do Produto:5

ID do Produto:6

ID do Produto:7

ID do Produto:8

ID do Produto:9

 

------

 

O que quero fazer é por exemplo, pegar a id 1

e caso o valor 1 exista em uma outra tabela, ele exiba o resultado "produto comprado".

Mas que ele exiba esta mensagem somente se a ID também existir em outra tabela.

Tenho uma tabela comprados e nesta tabela somente se o produto for comprado ele aparece lá. As ids dos produtos comprados são as mesmas da tabela produtos que é a que estou exibindo estes resultados.

Sei que tenho que fazer um select na tabela comprados e um IF. para exibir a mensagem. Mas não consigo montar um IF que verifique se o valor da ID que está sendo exibida, exista na outra tabela.

 

Alguém sabe como fazer?

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.Fiz assim:Ele não exibe nada, porque acho que fiz o IF errado e não está verificando se o valor existe:

<?$host = "localhost"; $bd = "produtos"; $usuario = "root"; $senha = "senha"; $conexao = mysql_connect($host, $usuario, $senha); $banco = mysql_select_db($bd); $consulta = mysql_query("select * from produtos order by produtos_id");$consulta2 = mysql_query("select * from produtos_comprados order by comprados_id");while($m_produto = mysql_fetch_array($consulta)){echo 'ID do Produto:'.$m_produto['produtos_id'];echo "<br>";while($m_compra = mysql_fetch_array($consulta2)){if($m_produto['produtos_id'] == $m_compra['comprados_id']){ echo "Produto Vendido";} } }?>

Meu código está assim mas não está funcionando.Ele apenas exibe os registros, mas não faz a comparação.O que há de errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, não intendi muito bem mas tenta assim:

 

<?$host = "localhost";$bd = "produtos";$usuario = "root";$senha = "senha";$conexao = mysql_connect($host, $usuario, $senha);$banco = mysql_select_db($bd);$consulta = mysql_query("select * from produtos order by produtos_id");while($m_produto = mysql_fetch_array($consulta)){echo 'ID do Produto:'.$m_produto['produtos_id'];$consulta = mysql_query("select * from produtos_comprados WHERE comprados_id = '".$m_produto['produtos_id']."'");if(mysql_num_rows($consulta)){echo " Produto Comprado";echo "<br />";}}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho, mas muda pra esse, mudei só algumas coisas...

 

while($m_produto = mysql_fetch_array($consulta)){	echo 'ID do Produto:'.$m_produto['produtos_id'];	$sql = mysql_query("SELECT * FROM produtos_comprados WHERE comprados_id='".$m_produto['produtos_id']."'");	if(mysql_num_rows($sql) == 1)	{		echo ' Produto Comprado';		echo '<br />;';	}}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Há uma maneira mais fácil, que faz apenas uma consuta ao banco. :D

Dá para usar Left Join. Veja o que o Manual "diz":

 

Se não houver registros coincidentes para a tabela a direita da parte ON ou USING em um LEFT JOIN, uma linha com NULL atribuído a todas as colunas é usada para a tabela a direita. Você pode usar este fato para encontrar registro em uma tabela que não houver contrapartes em outra tabela

Fonte: http://dev.mysql.com/doc/refman/4.1/pt/join.html

 

Execute esta consulta:

SELECT p. * , c. *
FROM produtos p
LEFT JOIN comprados c ON p.id = c.id_produto

Quando o id do produto na tabela produtos não existir no campo id_produto da tabela comprados, id_produtos ficará com o valor NULL. Então basta fazer a verificação com IF, testando se o campo está vazio ou não. Se estiver, o produto não foi comprado. ;)

 

Abraços,

Beraldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Diorges, mudei para aquele jeito mas aconteceu a mesma coisa.Beraldo, não entendi corretamente o funcionamento disso:SELECT p. * , c. *FROM produtos pLEFT JOIN comprados c ON p.id = c.id_produtoeste c.id_produto é o id da tabela comprados certo?em relação ao IF que verifica se o campo está vazio, como monto isso?Pois tenho que verificar se o valor de produtos_id da tabela produtos existe em algum campo produtos_id da tabela compradosComo posso montar isso no if?Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

id_produto, nesse caso, é o id do produto que fica aarmazenado na tabela "comprados".

 

Por exemplo: imagine que a variável $sql tenha a consulta que postei anteriormente. Veja o código:

 

$query = mysql_query($sql);

while ($f = mysql_fetch_object($query))
{
	if ($f->id_produto != NULL)//se o campo não for nulo, o produto já foi comprado
	{
		echo $f->nome_produto . " => Comprado<br />";
	}
	else//o produto não foi comprado
	{
		echo $f->nome_produto . "<br />";
	}
}

Deu para sacar? ;)

 

Abraços,

Beraldo

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.