recherche un tutoriel de gestion de tags

Eléphanteau du PHP | 29 Messages

14 juil. 2006, 15:12

bon, je crois que tout est dans le titre du message, je recherche un tutorial expliquant comment programmer un système de tags, ou bien si quelqu'un ici connaît une méthode efficace... (stocker les tags avec les enregistrements, dans une table à part etc., gérer les occurences multiples...)

Eléphant du PHP | 197 Messages

14 juil. 2006, 16:27

tu veux dire quoi par tags ?

Eléphanteau du PHP | 29 Messages

14 juil. 2006, 16:41

les utlisateurs peuvent associer des mots-clé à des enregistrements d'une table, et ces mots-clé sont ensuite affichés avec un paramètre (généralement la taille) dépendant de la fréquence du mot-clé (par exemple, si 5 utilisateurs ont entré le mot-clé "super", 3 ont entré le mot-clé "bien" et 1 utilisateur a entré "bof", "super" sera écrit plus gros que "bien" qui sera ecrit plus gros que "bof"). un clic sur un mot-clé affiche la liste des enregistrements "taggués" avec ce mot-clé par ordre décroissant de fréquence du mot-clé.

je sais pas si c'est clair, pas facile à expliquer...

Eléphant du PHP | 197 Messages

14 juil. 2006, 17:22

tu parles des meta tags ? si oui... il y a plein de tutos sur ça :?

Eléphanteau du PHP | 29 Messages

14 juil. 2006, 17:26

non, il ne s'agit pas de meta tag...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

14 juil. 2006, 23:39

Les "tags" sont en fait des mot clé ou des étiquettes aposer par des utilisateur à des sujets (textes, images, fichiers) ... et qui permet lorsque l'on fait une recherche de retrouver tous les éléments associés à un thème.. (voir les sites du genre flicker et autre)

Je ne connais pas de tutoriel, mais la gestion ne m'a pas l'air spécialement compliquée. Tu dois pouvoir faire un truc simple avec 3 tables : la première contenant tes éléments (idElement, ...) , la seconde tes tags (idTag, libelle), la dernière contenant les id des éléments et ceux des tags auxquels ils sont associés (idElement, idTag).

Lorsque tu ajoutes un tag sur un élément, il te faut vérifier si celui-ci existe déjà dans la table tags. Si ce n'est pas le cas tu l'ajoutes et dans tous les cas récupère son id. Tu insères ensuite dans ta table de liaison l'id de l'élément et l'id du tag et le tour est joué.

Pour retrouver les éléments associés à un tag : tu parcours la table tag à la recherche de l'idTag de celui-ci, puis la table de liaison pour trouver quels idElement sont associés à cet idTag, et enfin ta table d'éléments avec les idElement récupérés.

Pour savoir combien de fois un tag est utilisé, il suffit de compter combien de fois son idTag est présent dans ta table de liaison. Et pour l'afficher avec une taille de police différente tu peux soit utiliser une règle de 3, soit faire des groupes (entre 1 et 10 => 8px, entre 10 et 50 => 10px, au delà de 50 => 12px)

Est-ce que cela te permet d'y voir plus clair ?

Eléphanteau du PHP | 29 Messages

16 juil. 2006, 17:18

merci, et il serait pas mieux de mettre le nombre d'occurrences dans la table de liaison au lieu de compter combien de fois le tag s'y trouve?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 juil. 2006, 19:42

Ce serait effectivement plus rapide pour les comptabiliser, le problème c'est qu'il faut penser à les mettre à jour à chaque fois qu'un tag est ajouté ou supprimé. Le fait de les compter rend cette action automatique et comme le count() est la plus optimisée des fonction sql, ca devrait trop couter au niveau des performances :)

Cela dit, c'est à toi de voir ce que tu préfères, les deux solutions fonctionnent :)

Ce que tu peux faire également c'est virer la table contenant les id et libellé des tags et mettres les libellés directement dans la table de liaison à la place de l'id. Tu n'aurais plus besoin de vérifier si un libellé existe lors de l'insertion, et un "select distinct(libelle)" sur cette table te permettrait de regrouper tous ceux identiques...