Blog - Post avec multiples catégories

Répondre
BigZ[SHN]
le 20/08/2007 à 19:09
BigZ[SHN]
Bonjour,

Je développe un blog pour m'amuser.

J'ai donc fait une table blog et une table catégories.

A chaques ajout d'un post, une catégorie lui est attribuée, une des catégories qui se trouvent dans la table catégorie. Pour cela j'ai utilisé un champ id_catégorie.

Ca fonctionne très bien si chaque post à 1 seule catégorie, mais si on veux relier un post a plusieurs catégories ca ne joue pas.

Comment puis-je faire le plus simplement.

Au départ je pensais mettre tous les id_catégories bout à bout (1,5,12)

Mais après pour faire des requetes par catégories ca devient compliqué...

Merci de votre aide
LA GLOBULE
le 21/08/2007 à 00:51
LA GLOBULE
A priori, tu cherches à mettre un champ catégorie dans ta table des posts.

Pourquoi ne pas virer ce champ, puis faire une table de liaison entre id_categorie et id_post (avec juste ces deux champs) : comme ca, tu peux avoir pour un post, plusieures catégories.
BigZ[SHN]
le 24/08/2007 à 17:53
BigZ[SHN]
Houla c'est hard au niveau requete, mais ca semble bien marcher...

merci de l'astuce
BigZ[SHN]
le 05/09/2007 à 12:32
BigZ[SHN]
Rebonjour,

J'ai obté pour cette solution qui fonctionne bien. A présent j'ai un problème avec une requete dans 2 tables.

Ma table de jointure s'appelle abocat, ensuite j'ai :
categorie et blog

Dans abocat j'ai id_cat et id_blog.

Voilà ma requete qui fonctionne à condition que je n'ai qu'une catégorie assignée et pas plusieures :

SELECT * FROM categories WHERE id=(SELECT id_cat FROM abocat WHERE id_blog=$id_blog)

Comment contrer cela ?

Merci
LupusMic
le 06/09/2007 à 06:44
LupusMic
Malheureux ! Des selcet imbriqués, tu veux la mort de ton MySQL ;)

Une table de jointure, classiquement, ce serait plutôt comme ça qu'on l'utilise :
select * from categories join abocat on categories.id = abocat.id_cat where abocat.id_blog = ?


Mais au fait, que souhaites-tu contrer ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours