Ir para conteúdo

POWERED BY:

Arquivado

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

victormartinez

Relacionamento N:N - Problemas com tags

Recommended Posts

Caros, estou criando um blog que possui a seguinte modelagem em mysql (sucinta):

 


[posts]           [posts_tags]           [tags]
id(PK)              id(PK)               id(PK)
titulo            id_post(FK)            nome
resumo            id_tag(FK)
conteudo
data
imagem
video

 

Como exemplo, temos:

 


 [posts]                                [posts_tags]                [tags]
id     titulo                         id  id_post id_tag           id     nome
8    Lorem Ipsum                      1     8        1             1     programação
Lorem ipsum dolor sit amem            2     8        2             2      php

 

 

O relacionamento ocorre da forma N:N (1 posts podem ter N tags e 1 tag pode ser de vários posts).

 

No blog são apresentados os posts com as tags abaixo do título. Quando o usuário clica numa tag ele é redirecionado para uma página que apresenta todos os posts que possuem aquela tag.

 

CONTUDO, quando executo o SQL ele só escreve na tela a TAG QUE O USUÁRIO CLICOU. Ou seja, se temos:

__________________________

Aprenda o básico de PHP

tags: programação, php

__________________________

 

E o usuário clica em php, na outra página ele só mostra a tag associada que o usuário clicou e não as outras tags associadas:

__________________________

Aprenda o básico de PHP

tags: php                

__________________________

_______________________________

Desenvolva um sistema de CRUD

tags: php                      

_______________________________

 

Alguém sabe de algum comando SQL para resolver isso?

 

Peço desculpas se escrevi alguma coisa de forma incorreta. Sou iniciante ainda.

 

Att.

 

Esqueci de mencionar: passo o a id da tag por GET e recebo na outra página. Ai, executo:

 

$sql_select = "SELECT `posts`.*, group_concat( DISTINCT `tags`.`id` SEPARATOR ', ') AS id_tag FROM `posts` INNER JOIN `posts_tags` ON `posts_tags`.`id_post` = `posts`.`id` INNER JOIN `tags` ON `tags`.`id` = `posts_tags`.`id_tag` WHERE (id_tag = $tag) GROUP BY `posts`.`id` ORDER BY `posts`.`id` DESC";

Compartilhar este post


Link para o post
Compartilhar em outros sites

[posts]           [posts_tags]           [tags]
id(PK)              id(PK)               id(PK)
titulo            id_post(FK)            nome
resumo            id_tag(FK)
conteudo
data
imagem
video

 

Query básica

 

select *
from posts , posts_tabs , tags
where posts.id = posts_tags.id_post
and   tags.id = post_tags.id_tag
and    post_tags.id_tags = $tag

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não necessariamente.

 

Não sei se a sintaxe `posts`.`id` com o "`" é obrigatória em MySql.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tinha um erro

 

 

select *

from posts , posts_tags , tags

where posts.id = posts_tags.id_post

and tags.id = post_tags.id_tag

and post_tags.id_tags = $tag

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tinha um erro

 

 

select *

from posts , posts_tags , tags

where posts.id = posts_tags.id_post

and tags.id = post_tags.id_tag

and post_tags.id_tags = $tag

 

 

Mesmo erro =/

 

Postei o problema também num blog que tinha algo muito parecido com o que eu estou fazendo. Vamos ver se o autor consegue me ajudar:

 

http://eduardomatos.wordpress.com/2010/12/25/sistema-de-tags-em-php-e-mysql-usando-pdo-transactions-chaves-estrangeiras-e-lambda-functions/#comment-429

 

Att.

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.