Leandromx 0 Denunciar post Postado Setembro 10, 2009 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 produtosPergunto: é 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
André D. Molin 15 Denunciar post Postado Setembro 10, 2009 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
Leandromx 0 Denunciar post Postado Setembro 10, 2009 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
Leandromx 0 Denunciar post Postado Setembro 11, 2009 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
Matias Rezende 50 Denunciar post Postado Setembro 11, 2009 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