srnalim 21 Denunciar post Postado Agosto 6, 2012 Bom galera preciso da ajuda de vocês estou montando um site de classificados, onde a empresa seleciona uma categoria e anuncia só que eu preciso contar quantos anúncios de empresas a em cada categoria e não quero montar gambiarras como geralmente eu monto. Mais ou menos assim anuncio id img cat emp status ... categoria id cat_nome status Quando exibir vai aparecer "Categoria x (quantidade)" onde está a quantidade eu preciso da quantidade de anúncios cadastrados na categoria. Aguardo atenciosamente e agradeço desde já galera. Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Xavier 189 Denunciar post Postado Agosto 6, 2012 Sugiro mudar a tabela referente ao anuncio anuncio id img cat -> colocar 'id_cat' e relacionar com tabela referente a categoria ... Onde id_cat seria a FK (chave estrangeira) referindo-se ao 'id' na tabela categoria. Compartilhar este post Link para o post Compartilhar em outros sites
srnalim 21 Denunciar post Postado Agosto 6, 2012 Sim poderia ser também mas a questão é mesmo que seja um estrangeira como contar o total de registros quando uma for igual a da outra tabela a minha gambiarra seria mais ou menos assim porem acredito que não daria certo. <?php $consulta = mysql_query("SELECT nome da categoria FROM categoria") $con = mysql_fetch_array($consulta); $catnome = $con['cat_nome']; ?> Ai eu teria que criar uma outra consulta para anúncios para criar outra variável pra depois criar uma terceira consulta já filtrando com WHERE para mostrar somente quando os dados fossem iguais, porém quando uso o mysql_num_rows ele me passa um erro e de qualquer forma assim fica muito código para uma função boba acredito eu né não sou nenhum gênio em php. Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Xavier 189 Denunciar post Postado Agosto 6, 2012 Não vejo motivos para fazer essas gambiarras. Sugiro você pesquisar sobre : -inner join; -left join; -right join; Tenho certeza que aprendendo a utilizá-las será muito mais produtivo. Compartilhar este post Link para o post Compartilhar em outros sites
erison 63 Denunciar post Postado Agosto 6, 2012 tenta assim Select *, (Select Count(*) From categoria Where id = t1.cat) From anuncio t1 Compartilhar este post Link para o post Compartilhar em outros sites
srnalim 21 Denunciar post Postado Agosto 6, 2012 Agradeço a todos consegui fazer o código aqui ai fica caso alguem precise: <table> <tr> <?php $concat = mysql_query("SELECT * FROM cat ORDER BY id ASC"); $cpra_cat = mysql_fetch_array($concat); $ct = $cpra_cat['cat']; $ConectaCat = mysql_query("SELECT * FROM cat ORDER BY id ASC"); while ($cat = mysql_fetch_array($ConectaCat)) { $ct = $cat['cat']; $conta = mysql_query("SELECT * FROM cadastro WHERE cad_cat = '$ct' "); $total = mysql_num_rows($conta); ?> <td><?php echo $cat['cat'];?></td><td>(<?php echo $total; ?>)</td> <?php } ?> <tr> </table> Compartilhar este post Link para o post Compartilhar em outros sites
erison 63 Denunciar post Postado Agosto 7, 2012 <table> <tr> <?php $concat = mysql_query("SELECT * FROM cat ORDER BY id ASC"); $cpra_cat = mysql_fetch_array($concat); $ct = $cpra_cat['cat']; $ConectaCat = mysql_query("SELECT * FROM cat ORDER BY id ASC"); while ($cat = mysql_fetch_array($ConectaCat)) { $ct = $cat['cat']; $conta = mysql_query("SELECT * FROM cadastro WHERE cad_cat = '$ct' "); $total = mysql_num_rows($conta); ?> <td><?php echo $cat['cat'];?></td><td>(<?php echo $total; ?>)</td> <?php } ?> <tr> </table> desse geito teria dado certo <table> <tr> <? $Qry = mysql_query(Select *, (Select Count(*) From cat Where id = t1.cad_cat) as total From cadastro t1); while($Mst = mysql_fetch_array($Qry)){ ?> <td><?php echo $Mst['cat']?></td><td>(<?php echo $Mst['total']?>)</td> <? }?> <tr> </table> isso ai em cima que você fez foi um gambiarra. do modo que eu fiz diminuio umas 10 linhas Compartilhar este post Link para o post Compartilhar em outros sites