Ir para conteúdo

POWERED BY:

Arquivado

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

userFeliz

Recuperar ID entre virgulas

Recommended Posts

Olá.

 

tenho uma tabela, onde fica o id dos post e das tags...

 

até ai tudo certo. ele recupera o post normal, porém no das tags(que é uma coluna de varchal), ele recupera varias tags, e as separam por virgulas...

 

ex:

 

id_post id_tag

1 1,5,4,8

 

no entanto, ele recupera apenas o primeiro id, neste caso por exemplo, seria o 1...

 

o que eu posso fazer para ele recuperar todos os ids entre as virgulas ?

 

uso esta linha para apresentar as tags:

 

<p id="tag"><b style="font-size:15px;">Tags - </b><?php echo"<a href=\"tag.php?id="  . $post['ID_Tag'] . "\"title=' ".$post['Name_Tag']." '>" .$post['Name_Tag'].  "</a>, "; ?> </p>
				

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
$ids="1,2,3,4,5";


$separavirgula = explode(',', $ids);

$id1 = $separavirgula[0];

$id2 = $separavirgula[1];

$id3 = $separavirgula[2];

$id4 = $separavirgula[3];

$id5 = $separavirgula[4];


echo "$id1 - $id2 - $id3 - $id4 - $id5";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não consegui fazer, rs. Devo ter feito algo errado...

 

segue o código :

<?php
$idTag = $post['ID_Tags'];
$selectId = explode(',', $idTag);
?>

<p id="tag"><b style="font-size:15px;">Tags - </b><?php echo"<a href=\"tag.php?id="  .$idTag . "\"title=' ".$post['Name_Tag']." '>" .$idTag.  "</a>, "; ?> </p>

desta forma, até aparece os ids e tals, com as virgulas junto... porém tudo é um único link, eles não estão separando...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não consegui fazer, rs. Devo ter feito algo errado...

 

segue o código :

<?php
$idTag = $post['ID_Tags'];
$selectId = explode(',', $idTag);
?>

<p id="tag"><b style="font-size:15px;">Tags - </b><?php echo"<a href=\"tag.php?id="  .$idTag . "\"title=' ".$post['Name_Tag']." '>" .$idTag.  "</a>, "; ?> </p>

desta forma, até aparece os ids e tals, com as virgulas junto... porém tudo é um único link, eles não estão separando...

 

Se você quer cada um com seu respectivo link você precisa fazer um loop com os ids. Compreende? Viu o exemplo que te passei para separar os ids das vírgulas? Ai você pode fazer um loop com for ou while.

Compartilhar este post


Link para o post
Compartilhar em outros sites


<?php

$idTag = $post['ID_Tags'];

$selectId = explode(',', $idTag);

 

for($i=0;$i<count($selectId);$i++){

?>

<p id="tag">

<b style="font-size:15px;">Tags - </b>

<?php

echo"<a href=\"tag.php?id=" .$selectId[$i] . "\"title=' ".$post['Name_Tag']." '>" .$selectId[$i]. "</a>, "; ?> </p>

 

<?php

}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito...

 

agora estou com problemas, para mudar do id, para o nome... esta apenas recuperando o nome da primeira tag, alguém sabe como resolver isto ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema é a modelagem.

 

há solução para resolver sob a estrutura corrente... mas se puder, remodele a estrutura dos dados pois isso dessa forma pode lhe trazer complicações futuras

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema é a modelagem.

 

há solução para resolver sob a estrutura corrente... mas se puder, remodele a estrutura dos dados pois isso dessa forma pode lhe trazer complicações futuras

 

e o que você me aconselha a fazer ?

 

atualmente tenho uma tabela para os posts, outra para as tags, e uma que apenas informo o id dos mesmos....

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas eu já tenho.

 

apenas recupero o id dessas tags, e mando pra outra tabela, onde vai ficar o id do post e das tags...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma referencia entre as duas tabelas (Post e Tags), armazenando somente o id de cada!

 

Exemplo:

 

Post_has_Tag -> Nome tabela
Post_idPost INT -> Nome campo
Tag_idTag INT -> Nome Campo
Evite esta gambiarra de 1,5,4,8

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tambem concorco com o WDuarte e com o Hinom, trabalha desta forma pode trazer serios problemas.

Este link pode lhe ajudar: Normalização de dados

 

Eu fiz exatamente desta forma antes, porém tive problemas para apresentar os posts corretamente, com suas devidas tags...

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, vamos lá, fiz exatamente como antes...

 

armazenar os ids e tals, já esta funcionando, exatamente como vocês me indicaram...

 

o problema, creio eu, esta no select...

 

segue o código :

 

$query = mysql_query("SELECT * FROM posts T INNER JOIN categories TC ON T.Category_ID = TC.ID_Cat 
	LEFT JOIN post_tags ON T.ID = post_tags.ID_Post
	LEFT JOIN tags ON tags.ID_Tag = post_tags.ID_Tags
	GROUP BY T.Title ORDER BY T.ID DESC LIMIT $inicial, $numreg") or die(mysql_error());

como vocês podem ver, o id da tabela post, esta igual ao id da tabela, onde recebe o id dos posts e das tags(post_tags), por isso coloquei o GROUP BY T.Title, para listar os posts pelos títulos.... caso contrario, eles iriam se repetir, assim como esta na tabela post_tags. O problema, é que mostra apenas a primeira tag...

 

ex :

tabela post_tags:

id_post id_tag

1 2

1 5

1 9

sem GROUP BY T.Title :

 

apresentação dos post

 

titulo post1

tag: 2

 

titulo post1

tag:5

 

titulo post1

tag:9

 

 

com GROUP BY T.Title:

 

titulo post1

tag:2

 

este é o problema, ele apresenta apenas a primeira tag...

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.