Forum Clubic

Gestion de plusieurs mots clés en Mysql/PHP pour un articles

Bonjour chers clubbeurs

Je viens à la rescousse pour un problème gestion de mots clés en Mysql! Dans le principe c’est très simple : attribuer plusieurs mots clés pour des articles… le tout géré en base de données. Le problème est que je ne sais pas du tout comment m’y prendre. Pour le moment je sais gérer un seul mot clé par article, mais si je veux en attribuer plusieurs ca devient tout de suite plus compliqué.

Je me demande si il faut créer un champ en db par mot clé, ou si il y a moyen de stocker tous les mots clés d’un article dans le même champ.

Faite moi part de vos conseils et de vos expériences :stuck_out_tongue: merci

Bonjour,

Pour ma part, je créerai simplement une table “mots clés”, vu que le nombre de mot clé sera variable.
Avec une relation 1,n // 1,n avec la table article.

Cordialement

+1 pour la réponse de Merlon, cela résoudra ton problème et permettra de gérer un nuage de mot clef si tu le désires.

Une autre solution consiste à intégrer tous les mots clefs dans un seul champ en les séparant par des virgules ou des point-virgules, mais cela reste moins propre (à mon sens)
Ou encore, une table avec les mots clefs puis un champ dans ta table articles avec une liste d’identifiant de mots clefs séparés par des virgules ou des point-virgules.
Edité le 17/05/2011 à 11:19

Salut,

Je te conseille d’avoir une table sql avec tout tes mot clef. Pour les article tu met les id des mot clef séparés par une virgule. Comme ça tu pourra gérer le multilangue ou un système de dico avec définition ou encore un nuage de mot clef sans te prendre la tête. Si tu ajoute un compteur de vue sur ta table tu pourra avoir un nuage de mot clef en relation avec le nombre de vue de chaque mot clef. Et afficher des mot clef de taille différente selon leur importance.

Rebonjour

Enfaite, j’ai réussi en utilisant un array et un implode. Ce qui fait que j’ai mes mots clés dans un seul champ en db tel que :
champ mysql : valeur1, valeur2, valeur3, etc…

J’utilise un explode et foreach pour les afficher correctement.

Seulement un autre surgit :
J’utilise un petit CMS fait main, et j’aimerai que les différentes cases cochées soient récupérées lorsque je retourne dans mon formulaire. Avec un mot clé c’est pas difficile :

<?php if($type == $row2['name']){echo 'checked=checked';} ?>

Mais comment faire avec mes différents mots clés? (donc, avoir plusieurs cases cochées lorsque je reouvre le formulaire d’édition)?

Merci :slight_smile:

Tu charge tes mot clef dans un input hidden. Ensuite tu les explode en js et les renvoit dans une div avec un onclick.

ca m’a l’air bien compliqué ca :slight_smile:
Je penses qu’il doit y avoir un moyen en pur php… mais lequel :stuck_out_tongue:

Avec un compteur par exemple. Quand tu fait ton explode tu incrémente le compteur et tu stocke cette variable dans un input hidden. Ensuite quand tu valide ton formulaire tu récupère cette variable et tu t’en sert pour récupérer tes mot clef en _post.

du genre pour le formulaire :



foreach explode $tags has $tag {

$compteur = 0 ;

if($type == $row2['name-'.$compteur.'']){echo 'checked=checked';}

$compteur++

}

<input hidden value="$compteur" >


Et pour la réception :



_post[data] > compteur > blabla bla

> boucle desincremente compteur >

_post[tags-$compteur] > hop


aller merci, je vais me pencher dessus :wink: