janick 1 Denunciar post Postado Julho 25, 2007 Olá. Estou fazendo um menu com esta estrutura: Exemplo: - Seção 01 Categoria 01 Categoria 03 Categoria 12- Seção 02 Categoria 18 Categoria 22 Como faço para trabalhar com JOIN ao fazer o select no banco de dados para que ele me retorne o menu desta maneira? Atualmente, tenho SECAO e CATEGORIA como tabelas. Faço o select na tb SECAO, a partir do nome da seção faço outro select dentro da tb CATEGORIA, observo os itens de categoria que estão em tal seção e monta o menu. Assim: $acesso_secao = mysql_query("SELECT * FROM secao");while($linha = mysql_fetch_array($acesso_secao)){ $nome_secao = $linha['nome']; $acesso_categoria = mysql_query("SELECT * FROM categoria WHERE secao='".$nome_secao."'"); $contagem = mysql_num_rows($acesso_categoria); if($contagem != 0){ $lista_secao = print '<li> - '.$nome_secao.'</li>'; while($linha = mysql_fetch_array($acesso_categoria)){ $nome_categoria = $linha['nome']; $lista_categoria = print '<li>'.$nome_categoria.'</li>'; } }} Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Julho 25, 2007 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
Beraldo 864 Denunciar post Postado Julho 25, 2007 Não deu para eu responder a hora que movi o tópico, mas agora vamos lá: Considere estas duas tabelas: create table categorias( id smallint(5) unsigned not null auto_increment, nome varchar(50) not null, Primary Key (id) ); Create table secoes( id mediumint(8) Unsigned Not Null auto_increment, categoria smallint(5) unsigned not null, nome varchar(100), Primary Key (id), Foreign Key (categoria) References categorias(id) ) E os seguintes registros: Insert Into categorias Values (1, 'Informática'), (2, 'Instrumentos Musicais'); Insert Into secoes Values (1, 1, 'Gabinetes'), (2, 1, 'Memótias'), (3, 1, 'Monitores'), (4, 2, 'Guitarras'), (5, 2, 'Violinos'), (6, 2, 'Pianos'); Executando-se esta consulta: Select s.nome, c.nome From secoes as s Inner Join categorias as c On s.categoria = c.id; O resultado será mais ou menos o que você deseja. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Abraços, Beralod Compartilhar este post Link para o post Compartilhar em outros sites
janick 1 Denunciar post Postado Agosto 1, 2007 Obrigado pela resposta, só fui ver e retomar hoje! Consegui fazer desta maneira: function montaMenu() { $acesso = mysql_query(" SELECT tabela_subcategoria.subcategoria_nome, tabela_categoria.categoria_nome FROM tabela_subcategoria, tabela_categoria WHERE tabela_subcategoria.subcategoria_categoria_id = tabela_categoria.categoria_id "); while($x = mysql_fetch_array($acesso)) { $categoria_nome = print '-'. $x['categoria_nome'].'; $subcategoria_nome = print $x['subcategoria_nome'].'; } } Mas ele me retorna: - Categoria 01 Subcategoria A - Categoria 01 Subcategoria B - Categoria 02 Subcategoria C Então tentei fazer um while, dentro do while, pra agrupar as subcategorias dentro da categoria, mas não funcionou. Compartilhar este post Link para o post Compartilhar em outros sites