Array
(
)

If dentro de um loop é possível?

PHP
Carlos Magno
   - 21 jan 2014

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.

William (devwilliam)
   - 21 jan 2014

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

0
|
0

Faabiianooc
   - 21 jan 2014

Utilize alias nas tabelas.
Procure sobre

0
|
0

Carlos Magno
   - 21 jan 2014

Veja bem William....

Se coloco no select assim:
#Código

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:
#Código
<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:
#Código
<?php switch($idcat) { case "$id" : echo "$nome"; break; } ?>


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


O loop se trata de um DO WHILE

0
|
0

William (devwilliam)
   - 22 jan 2014


Citação:
Veja bem William....

Se coloco no select assim:
#Código

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:
#Código
<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:
#Código
<?php switch($idcat) { case "$id" : echo "$nome"; break; } ?>


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


O loop se trata de um DO WHILE


Tente assim:

#Código
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..

0
|
0

Carlos Magno
   - 22 jan 2014

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.

0
|
0

William (devwilliam)
   - 23 jan 2014

Tranquilo Carlos, estou encerrando o tópico!!

0
|
0