[PHP - MySQL] Choix de type

Alex47

Membre confirmé
19 Avril 2004
12
0
45
Phalsbourg
afriqs.free.fr
Bonjour,

Sur un site fait en php, je voudrais permettre aux internautes de pouvoir enregistrer plusieurs choix et je ne sais pas quoi choisir. Je m'explique...

Soit un article de magazine informatique. Pour décrire une catégorie, on peut avoir plusieurs choix possibles. par exemple Quicktime peut entrer dans les catégories Audio et Vidéo. J'avais pensé utiliser le type SET, le problème est que je veux aussi laisser la possibilité à l'internaute d'ajouter des catégories. J'ai la base Article qui contient un champ "categorie" ainsi qu'une base Catégorie de clé primaire "categorie" (pour lier ces deux bases).

Comment dire au champ categorie qu'il a la possibilité d'avoir plusieurs valeurs tirées de la base Categorie?

Je précise que pour le html de catégorie, j'utilise la balise <select multiple="multiple" ...>

J'espère avoir été clair... :-/

SVP, pas taper, je débute en MySQL ;-)
 
A ta place, je ferais 3 tables :

Article(... , categories_pk , ...)
Categories(categories_pk, ...)
Categorie(categorie_pk, ...)

Où categories_pk est la primary key de Categories, tu peux simplement utiliser une valeur entière d'index. Et Categorie contient une liste de primary key de Categorie. Même chose pour l'index sur categorie_pk.

J'ai pas le temps de vérifier et prouver que c'est bien la forme normale correcte, mais mon instinct me dit que ça doit être ça :D
 
Il te suffit d'avoir une table catégorie avec la structure suivante :

cat_id - int
nom - varchar(50) (par exemple)

Ensuite dans ta table cat_article tu fais l'association entre 1 article et 1 catégorie :

ca_id - int
cat_fk - int
art_fk - int

ainsi si un article est dans plusieurs catégorie tu auras plusieurs tuples dans ta table cat_articles.

Par exemple si tu as les catégories :

1 - son
2 - image

et que tu as un article sur son et image (l'ID de l'article est 100) tu auras :

ca_id - cat_fk - art_fk
1 - 1 - 100
2 - 2 - 100

C'est plus clair ?