If dentro de um loop é possível?

21/01/2014

0

PHP

Ola galera....estou com um probleminha que com o pouco de conhecimento que tenho não consigo resolver.

Tenho uma tabela de categorias e outra com artigos cadastrados sendo que nesta existe um campo onde identifica a categoria de determinado artigo.
Montei uma página para listar todos os artigos e, claro, tem uma coluna que mostra a qual categoria pertence o artigo.
O problema esta no seguinte:

1 - Se no select coloco um INNER JOIN dá conflito nos campos ID das duas tabelas quando preciso linkar uma outra página usando o ID como variável;
2 - Tentei usar o switch mas não me retornou nada;
3 - Tentei um if mas das da mesma forma, ou não me retorna nada ou retorna a mesma categoria para todos os artigos;

Existe alguma solução para o meu caso?

Aguardo algum tipo de ajuda.
Carlos Magno

Carlos Magno

Responder

Posts

21/01/2014

William

Colega Carlos, por gentileza poste o código em questão, assim facilita para ajudá-lo!!
Responder

21/01/2014

Fabiano Carvalho

Utilize alias nas tabelas.
Procure sobre
Responder

21/01/2014

Carlos Magno

Veja bem William....

Se coloco no select assim:
SELECT artigos.id, artigos.idcat, artigos.data, artigos.titulo, categorias.id, categorias.nome FROM artigos INNER JOIN categorias ON(artigos.idcat = categorias.id) ORDER BY artigos.id DESC;

e colocar no loop assim:
<a href="view.php?id=$id">Visualizar</a>

Em vez de capturar o id da tabela de artigos ele captura o id da tabela de categorias.

No caso do switch, tentei colocar assim mas não funcionou. Neste caso a variável $id seria da tabela de categorias:
<?php switch($idcat) { case "$id" : echo "$nome"; break; } ?>


Com o if:
<?php if($idcat = $id) { echo "$nome"; } ?>


O loop se trata de um DO WHILE
Responder

22/01/2014

William

Veja bem William....

Se coloco no select assim:
SELECT artigos.id, artigos.idcat, artigos.data, artigos.titulo, categorias.id, categorias.nome FROM artigos INNER JOIN categorias ON(artigos.idcat = categorias.id) ORDER BY artigos.id DESC;

e colocar no loop assim:
<a href="view.php?id=$id">Visualizar</a>

Em vez de capturar o id da tabela de artigos ele captura o id da tabela de categorias.

No caso do switch, tentei colocar assim mas não funcionou. Neste caso a variável $id seria da tabela de categorias:
<?php switch($idcat) { case "$id" : echo "$nome"; break; } ?>


Com o if:
<?php if($idcat = $id) { echo "$nome"; } ?>


O loop se trata de um DO WHILE


Tente assim:

SELECT artigos.id as ID_ARTIGO, artigos.idcat, artigos.data, artigos.titulo, categorias.id AS ID_CATEGORIA, categorias.nome FROM artigos INNER JOIN categorias ON(artigos.idcat = categorias.id) ORDER BY artigos.id DESC;


Note que estou usando alias nos campos, 'artigos.id as ID_ARTIGO' e 'categorias.id AS ID_CATEGORIA', quando você for capturar esses campos use o alias !!!

Qualquer dúvida estou a disposição..
Responder

22/01/2014

Carlos Magno

Tudo resolvido, William......mais uma para ficar de aprendizado.

Quando monto os projetos de inicio eu gosto de nomear os campos com as iniciais das tabelas (Ex: tabela artigo campo id = atg_id). Mas isso foi de um projeto que peguei com o carro já andando.

Valeu pela ajuda, William.
Responder

23/01/2014

William

Tranquilo Carlos, estou encerrando o tópico!!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar