21/01/2014

If dentro de um loop é possível?

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.

PHP

Carlos Magno

Respostas

21/01/2014

William (devwilliam)

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

21/01/2014

Fabiano Carvalho

Utilize alias nas tabelas.
Procure sobre
Responder Citar

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 Citar

22/01/2014

William (devwilliam)

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 Citar

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 Citar

23/01/2014

William (devwilliam)

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