Page 1 sur 1

afficher des produits similaires grâce aux tags

Posté : 25 nov. 2013, 02:34
par nebenobo
Bonjour à tous,

voici mon problème :

je développe un site de recettes de cuisine ; pour faire simple, j'ai une table de recettes 'recettes' (id_recette,nom_recette etc), une table de mots-clef 'tags_recette' (id_tag,nom_tag) et une table de relations entre les recettes et mots-clef 'tags_recette_assoc' (tags_assoc_id,tag_id,tag_recette) où tag_id se réfère à id_tag et tag_recette à id_recette.

Lorsque j'affiche la page d'une recette, j'aimerais proposer uniquement 3 recettes similaires à la fin, tant qu'à faire celles qui ont le plus de tags en commun avec elle.

Comment dois-je m'y prendre ? Requête(s) mysql ou comparaisons de tableaux ? Avec mon peu de pratique je comptais mettre les tag_id correspondant à la recette en question dans un tableau, puis dans une boucle sur toutes les autres recettes de la table mettre les tags correspondants dans un tableau et comparer les tableaux avec un truc du genre array_values(array_intersect)), mais j'imagine que ça mange de la ressource non ? Sachant qu'il y a déjà beaucoup de requêtes dans l'affichage de cette page...

Merci pour votre aide !

Re: afficher des produits similaires grâce aux tags

Posté : 26 nov. 2013, 16:45
par soft1ne
Salut,

Si j'étais dans ton cas, je pense que je ferais ca en requete SQL, avec des group by je pense.

Mais le système des tableaux peut fonctinoner mais nécessite plus de ressources, car tu dois passer chaque tag de chaque recette.

Re: afficher des produits similaires grâce aux tags

Posté : 26 nov. 2013, 21:11
par nebenobo
Salut,

merci de ta réponse, c'est bien ce qu'il me semblait mais du coup en requête mysql je vois pas trop à quoi celle-ci ressemblerait derrière SELECT id_tag from recettes...
je ne suis pas très calé pour les requêtes un peu complexes, surtout quand il y a plus de 2 tables en jeu, je comprends pas bien comment s'imbriquent les INNER JOIN, LEFT JOIN etc, et encore moins avec les GROUP BY (j'ai bien tenté de comprendre les explications données par l'aide mysql mais je suis un peu limité !

Une suggestion de requête ? Je crois qu'en plus ça m'aiderait bien à comprendre comment tout ça s'imbrique car dans les exemples de tables de l'aide j'ai du mal à visualiser...