Ir para conteúdo

POWERED BY:

Arquivado

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

sedex

Listar Categoria e Subcategoria com inner join

Recommended Posts

Pessoal, to precisando muito da ajuda de vocês!

 

Eu tenho 3 tabelas

 

categempresa

 

id

categoria

ID=1

CATEGORIA=EMPRESA

 

 

subcategempresa

 

id

id_categoria

subcategoria

ID =1

ID_CATEGORIA = 1

SUBCATEGORIA = Historico

 

 

 

Empresa

id

id_categoria

id_subcategoria

secao

subsecao

titulo

descricao

ID = 1

ID_CATEGORIA =1

ID_SUBCATEGORIA = 1

SECAO = EMPRESA

SUBSECAO =Historico

DESCRICAO = descrição

 

O que eu quero é assim:

 

EMPRESA

Historico

Quando clicar em Historico, exibi a descrição de Historico!

 

 

Tentei adaptar um código da net, mas não consegui!

 

<?php

include("conexao.php");

include("funcao.php");

conexao_mysql($host,$user,$pass,$db);

?>

 

<?php

$consulta_sqle = mysql_query("SELECT empresa.secao, subcategempresa.subcategoria FROM empresa, subcategempresa WHERE empresa.id_subcategoria = subcategempresa.id ORDER BY id DESC LIMIT 0,5");

if($consulta_sqle){

while($row = mysql_fetch_array($consulta_sqle)){

$id = $row['id'];

$diretorio = $row['diretorio'];

$titulo = $row['titulo'];

$secao = $row['secao'];

$conteudo = $row['conteudo'];

$imagem = $row['imagem'];

?>

 

<?php echo $secao; ?> - Sesão EMPRESA

 

<a href="exibe_noticias.php?noticia=' . $id . '"><?php echo $subsecao; ?></a> - Subseção HISTORICO

 

 

<?php

}

}

?>

 

Alguém sade como pode ser feito esse menu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi direito a lógica dessas três tabelas. Ficou meio confuso.

Leia este artigo:

http://www.tmferreira.com.br/blog/2007/07/...-um-erro-comum/

 

Acho que seria interessante remodelar esse banco de dados. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo o negocio é simples demais.

 

Eu cadastro uma CATEGORIA (ex. ESPORTE)

 

Depois cadastro uma Subcategoria (Ex. Futebol) #Aqui eu seleciono a categoria ESPORTE

 

Ai quando eu quiser cadastrar uma notícia, eu seleciono a Categoria e a Subcategoria.

 

 

O que eu quero e exibir em forma de menu:

 

ESPORTE

Futebol

Volei

Baskete

 

AUDIO

Instrumentos

Amplificadores

Subwoofer

 

 

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

E se precisar de uma "sub-sub-categoria"? ;)

O ruim dessa modelagem é ter de definir categoria e sub-categoria. Usando o modelo do artigo, basta especificar a sub-categoria. Além disso, pode haver inúmeros níveis de sub-categorias.

 

E a seleção dos dados é bem simples.

 

Veja no Laboratório de Scripts exemplos usando a mesma modelagem. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que o beraldo passou não esclareceu muita coisa!

 

$sql = sprintf( "select id, nome, link from menus WHERE ativo = 'S' and categoria_pai = '%d' order by id", $id );

eu não consegui pegar foi onde está acontecendo o relacionamento entre as tabelas!

 

 

 

O meu problema é simples, só quero listar uma Categoria e abaixo dela as suas subcategorias em um Loop!

 

Só que não to conseguindo, estou desde as 11:00 da noite tentando achar algo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A modelagem não está nas normas como os amigos disseram, mas vamos tentar resolver a listagem.

 

Com duas consultas voce resolve:

Uma que retorne as categorias e a cada categoria voce lista as subcategorias.

 

lista categorias

SELECT id, categoria FROM categempresa

 

Com o retorno de id, voce pode consultar as subcategorias.

 

SELECT subcategoria 
FROM subcategempresa INNER JOIN categempresa ON subcategempresa.id_categoria = categempresa.id
WHERE subcategempresa.id_categoria = '$id'

 

A variável $id será o retorno de cada linha da consulta anterior.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei assim:

$consulta_sql = mysql_query("SELECT filho.id_categoria, filho.id_subcategoria, filho.subsecao, pai.id_categoria, pai.id, pai.subcategoria FROM empresa INNER JOIN subcategempresa ON filho.id_categoria=pai.id_catgoria ORDER BY filho.secao");

 

Mas não funcionou

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, to conseguindo fazer funcionar, mas eu preciso só de mais uma ajudinha sua

 

Só preciso saber como puxar o id da tabela EMPRESA.

 

Nesse SELECT:

SELECT subcategoria

FROM subcategempresa INNER JOIN categempresa ON subcategempresa.id_categoria = categempresa.id

WHERE subcategempresa.id_categoria = '$id'

Eu não estou pegando o ID da tabela EMPRESA, e eu preciso para colocar no link:

 

<a class="linknoticias" href="exibe_noticias.php?noticia=<?=$id ?>"><?=$subcategoria?></a>

 

O código ficou assim:

 

<?php

include("conexao.php");

include("funcao.php");

conexao_mysql($host,$user,$pass,$db);

?>

<!-- Inicia a consulta das subcategorias -->

<?php

$consulta_sqle = mysql_query("SELECT id, categoria FROM categempresa ORDER BY id DESC");

if($consulta_sqle){

while($row = mysql_fetch_array($consulta_sqle)){

$id_categ = $row['id'];

$categoria = $row['categoria'];

?>

<!-- Inicio da exibição das categorias principais -->

<?=$categoria?><br>

<!-- Fim da exibição das categorias principais -->

 

<!-- Inicia a consulta das subcategorias -->

<?php

$consulta_sqle1 = mysql_query("SELECT subcategoria FROM subcategempresa INNER JOIN categempresa ON subcategempresa.id_categoria = categempresa.id WHERE subcategempresa.id_categoria = '$id_categ'");

if($consulta_sqle1){

while($row1 = mysql_fetch_array($consulta_sqle1)){

$id = $row1['id'];

$subcategoria = $row1['subcategoria'];

?>

<!-- Inicio da exibição das subcategorias -->

<a class="linknoticias" href="exibe_noticias.php?noticia=<?=$id?>"><?=$subcategoria?></a>

<!-- Fim da exibição das subcategorias -->

<?php

}}

?>

<!-- Fim da consulta das subcategorias -->

<?php

}}

?>

<!-- Fim da consulta das categorias principais -->

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei colocar com UNION, mas também não tem como pois o campo ID já esta sendo utilizado:

 

<?php

$consulta_sqle1 = mysql_query("SELECT subcategoria FROM subcategempresa INNER JOIN categempresa ON subcategempresa.id_categoria = categempresa.id WHERE subcategempresa.id_categoria = '$id_categ') UNION (SELECT id FROM empresa ORDER BY id DESC");

if($consulta_sqle1){

while($row1 = mysql_fetch_array($consulta_sqle1)){

$id = $row1['id'];

$subcategoria = $row1['subcategoria'];

?>

<a class="linknoticias" href="exibe_noticias.php?noticia=<?=$id?>"><?=$subcategoria?></a><br>

 

 

O resto já está funcionando, só preciso fazer esse link carregar o id da tabela EMPRESA.

 

Alguém teria alguma ideia de como fazer?

 

Pessoal, to precisando mesmo! Por isso to sendo insistente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá boa tarde tente assim...

 

<?php

 

$consulta_sqle1 = mysql_query("SELECT subcategoria FROM subcategempresa INNER JOIN categempresa ON subcategempresa.id_categoria = categempresa.id WHERE subcategempresa.id_categoria = '$id_categ') UNION (SELECT id FROM empresa ORDER BY id DESC");

if($consulta_sqle1){

while($row1 = mysql_fetch_array($consulta_sqle1)){

$id = $row1['id'];

$subcategoria = $row1['subcategoria'];

 

<a class="linknoticias" href="exibe_noticias.php?noticia=<? php echo $id ?>"><?php echo $subcategoria ?></a><br>

 

?>

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.