Ir para conteúdo

POWERED BY:

Arquivado

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

Leandromx

Query

Recommended Posts

Olá pessoal,

Seguinte, surgiu uma curiosidade agora mas não sei é possível.

 

Vou dar um exemplo:

Eu preciso listar os produtos CUJO cliente tenha o cadastro liberado.

 

Hoje no site, se o cliente cadastrar os produtos eu bloquear o cadastro, os produtos continuam aparecendo.

Então eu tinha pensando

$sql_produtos("select * from tb_produtos");
$total_produtos = mysql_num_rows($sql_produtos);
while($produto = mysql_fetch_array($sql_produtos)){
// Aqui eu pensei em fazer a query do cliente para ver se o cadastro esta liberado se tiver eu listo.
$sql_cliente = mysql_query("select * from cad_cliente where id_cliente = '$produto[id_cliente]'");
if($libera = mysql_num_rows($sql_cliente)>0){
echo "mostro o produto";
}

}
Ai eu vou ter um problema, se eu for mostrar $total_produtos mesmo o cadastro do fulano estando liberado ele irá mostrar todos os produtos

Pergunto: é possível eu fazer isso, mas uma forma que eu não precise fazer a query do cliente dentro do while e assim me mostrando os produtos do cadastro liberado? ou vou precisar criar mais um campo e uam função para caso eu bloqueio o cliente os imóveis tenha um status de bloqueado???

 

Resumindo, como mostrar os produtos do cliente cujo cadastro é liberado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta buscar nas duas tabelas.

 

SELECT * FROM `tb_produtos` AS p INNER JOIN `cad_cliente` AS c ON `p`.`id_usuario` = `c`.`id` WHERE `c`.`ativo` = 1

 

Onde `cad_cliente`.`ativo` é a coluna referente se o usuário está ativo ou não, e o valor '1' é que ele está ativo.

 

A consulta vai ficar mais ou menos assim.

Talvez nao funcione, ai é só dar uns ajustes.

 

Teste ai, adaptando de acordo com o teu sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ahh entendi..

Até rolou...

 

Só que ai me departei com um problema..

 

Nesse exato momento eu tenho 2 clientes cadastros.

Os dois estão com ativo=sim.

 

um deles tem um produto e outro nenhum..

 

Na hora do while era trazer 1 produto,

Até trás, só que ai ele repete duas vezes.. isso porque ele acho os dois clientes na QUERY e deu o loop duas vezes..

se eu tiver 10 clientes ele mostrar 10x o mesmo produto..

 

Como resolver isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou postar o que eu fiz

 


$sql_produtos= mysql_query("select * from produtos INNER JOIN cliente ON cliente.liberado='s'");	

while($c=mysql_fetch_array($sql_produtos)){
	
	echo "R$ $c[valor]";
 	echo "<Br>";
// se eu der um print_r($c); me trás as informações de todos

}
/*

resultado

R$10,00

R$10,00

 

*/ou seja dois porque tem dois usuários ativos no banco

Eu só tenho DOIS CLIENTES liberados.

E só tenho UM PRODUTO cadastro no banco inteiro.

 

O correto seria mostrar somente UM VALOR

 

Ainda não estou conseguindo pensar em uma forma de resolver... alguma idéia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A tua consulta está errada... O INNER JOIN é na coluna que relaciona o produto com o cliente... Imaginando que fosse id_cliente nas 2 tabelas...

 

SELECT * FROM produtos p INNER JOIN cliente c ON p.id_cliente = c.id_cliente WHERE p.status = 'ativo'

 

O que ocorre... o INNER JOIN liga as 2 tabelas. O WHERE filtra os resultados que você precisa.

 

De qualquer forma, sua dúvida é no Mysql, então vou mover para o fórum correto.

 

Tópico Movido

PHP http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Mysql

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.