asanoli 0 Denunciar post Postado Julho 17, 2008 Pessoal, Já tentei de várias maneiras e não consegui. É o seguinte: 1. Preciso selecionar em uma tabela de produtos um determinado TIPO (pintura) e agrupá-los por CATEGORIA. 2. Com o resultado dessa consulta, preciso pegar na tabela de categorias os seus respectivos NOMES DAS CATEGORIAS ordená-los de forma crescente. O que está acontecendo é que não sai em ordem crescente do nome (alfabética). Está ordenando pelo ID da categoria. $busca=mysql_query("select * from trabalhos where ativo='1' and tipo='1' group by categoria"); while ($res=mysql_fetch_array($busca)) { $acategoria=$res['categoria']; $sql=mysql_query("select * from categoria where codigo='$acategoria' order by categoria asc"); while ($res=mysql_fetch_array($sql)) { $telacategoria=$res['categoria']; $codigo=$res['codigo'];O site é esse: www.sergioesteban.com e a parte a que se refere é o MENU DE PINTURA SOBRE TELA, que deveria estar relacionado em ordem alfabética. Agradeço qualquer ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
SetaMB 1 Denunciar post Postado Julho 17, 2008 Alexandre, seu SELECT não tem erro nenhum.....mas se você colocar apenas "ORDER BY categoria", ele retornará em ordem alfabética já......ou seja....o "asc" no select é desnecessário e ele mesmo pode estar provocando uma confusão na busca. Tente apenas "SELECT * FROM categoria WHERE codigo = '$acategoria' ORDER BY categoria" Compartilhar este post Link para o post Compartilhar em outros sites
asanoli 0 Denunciar post Postado Julho 17, 2008 Alexandre, seu SELECT não tem erro nenhum.....mas se você colocar apenas "ORDER BY categoria", ele retornará em ordem alfabética já......ou seja....o "asc" no select é desnecessário e ele mesmo pode estar provocando uma confusão na busca. Tente apenas "SELECT * FROM categoria WHERE codigo = '$acategoria' ORDER BY categoria" De fato, tanto faz estar com o "asc" ou não. Tirei, mas não resolveu. Alguém mais saberia dizer qual a solução??? Compartilhar este post Link para o post Compartilhar em outros sites
Leandro Barral 1 Denunciar post Postado Julho 17, 2008 precisa ser colocado nos 2 query's o ASC $busca=mysql_query("select * from trabalhos where ativo='1' and tipo='1' group by categoria ASC"); while ($res=mysql_fetch_array($busca)) { $acategoria=$res['categoria']; $sql=mysql_query("select * from categoria where codigo='$acategoria' order by categoria ASC"); while ($res=mysql_fetch_array($sql)) { $telacategoria=$res['categoria']; $codigo=$res['codigo']; Compartilhar este post Link para o post Compartilhar em outros sites
asanoli 0 Denunciar post Postado Julho 17, 2008 precisa ser colocado nos 2 query's o ASC $busca=mysql_query("select * from trabalhos where ativo='1' and tipo='1' group by categoria ASC"); while ($res=mysql_fetch_array($busca)) { $acategoria=$res['categoria']; $sql=mysql_query("select * from categoria where codigo='$acategoria' order by categoria ASC"); while ($res=mysql_fetch_array($sql)) { $telacategoria=$res['categoria']; $codigo=$res['codigo']; Fiz conforme você sugeriu... Continua do mesmo jeito! Compartilhar este post Link para o post Compartilhar em outros sites
Ricardo Andrietta 1 Denunciar post Postado Julho 17, 2008 precisa ser colocado nos 2 query's o ASC $busca=mysql_query("select * from trabalhos where ativo='1' and tipo='1' group by categoria ASC"); while ($res=mysql_fetch_array($busca)) { $acategoria=$res['categoria']; $sql=mysql_query("select * from categoria where codigo='$acategoria' order by categoria ASC"); while ($res=mysql_fetch_array($sql)) { $telacategoria=$res['categoria']; $codigo=$res['codigo']; Fiz conforme você sugeriu... Continua do mesmo jeito! Cara... você tem que fazer a consulta usando INNER JOIN em vez de fazer 2 loop's no PHP. Com isso você economiza memória e processamento... select t.*, c.* from trabalhos t inner join categoria c on c.codigo = t.categoria where t.ativo='1' and t.tipo='1' group by t.categoria order by t.categoria ASC Lembre-se que com o "group by" você agrupa os dados e com o "order by" é que você classifica os dados! qquer coisa posta ai... espero ter ajudado! abs Compartilhar este post Link para o post Compartilhar em outros sites
asanoli 0 Denunciar post Postado Julho 17, 2008 precisa ser colocado nos 2 query's o ASC $busca=mysql_query("select * from trabalhos where ativo='1' and tipo='1' group by categoria ASC"); while ($res=mysql_fetch_array($busca)) { $acategoria=$res['categoria']; $sql=mysql_query("select * from categoria where codigo='$acategoria' order by categoria ASC"); while ($res=mysql_fetch_array($sql)) { $telacategoria=$res['categoria']; $codigo=$res['codigo']; Fiz conforme você sugeriu... Continua do mesmo jeito! Cara... você tem que fazer a consulta usando INNER JOIN em vez de fazer 2 loop's no PHP. Com isso você economiza memória e processamento... select t.*, c.* from trabalhos t inner join categoria c on c.codigo = t.categoria where t.ativo='1' and t.tipo='1' group by t.categoria order by t.categoria ASC Lembre-se que com o "group by" você agrupa os dados e com o "order by" é que você classifica os dados! qquer coisa posta ai... espero ter ajudado! abs Ricardo, eu até tinha pensado nessa solução, mas acho que não soube empreender. Fiz o que você propôs: $busca=mysql_query(" select * from trabalhos, categoria where trabalhos.ativo='1' and trabalhos.tipo='1' inner join trabalhos.categoria=categoria.codigo group by trabalhos.categoria order by categoria.categoria asc "); while ($res=mysql_fetch_array($busca)) { $categoria=$res['categoria.categoria']; $codigo=$res['categoria.codigo']; Tá voltando um warning: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/zeufesta/public_html/sergioesteban/cabecalho.php on line 55A linha 55 é a do while. Não consegui achar o erro. Nas duas tabelas tem um campo chamado "categoria". Será que isso atrapalha? Compartilhar este post Link para o post Compartilhar em outros sites
asanoli 0 Denunciar post Postado Julho 17, 2008 RESOLVIDO include "conexao.php"; $busca=mysql_query("select * from trabalhos, categoria where trabalhos.categoria=categoria.codigo and trabalhos.ativo='1' and trabalhos.tipo='1' group by trabalhos.categoria order by categoria.categoria asc"); while ($res=mysql_fetch_array($busca)) { $categoria=$res['categoria']; $codigo=$res['codigo']; Obrigado aos que ajudaram! Compartilhar este post Link para o post Compartilhar em outros sites