Bonjour,
Je refais un site perso de A à Z. Je suis en ce moment à la recherche de la façon la plus efficace de permettre à un visiteur de filtrer une liste d'items (des recettes, en l'occurence) en fonction de checkboxs de tags. Là pour l'instant il y a 414 recettes avec en moyenne 5 tags chacune (de type "végétarien" ou "sucré-salé") pour plus de 70 tags différents en tout.
Premier point :
Déjà j'hésite entre deux méthodes radicalement différentes : filtrer côté serveur en php et ajax ou filtrer côté client avec jQuery. Je me suis dit - peut-être à tort - qu'il valait mieux charger une fois la liste des recettes et leurs tags associés plutôt que de faire d'incessants appels au serveur. Compte tenu des volumes concernés, ai-je raison ? (jamais il n'y aura sur ce site perso les 65k+ recettes de marmiton et il n'y aura sans doute pas beaucoup de tags supplémentaires)
Second point :
En partant du principe que jQuery est la meilleure méthode, comment réaliser efficacement ce que je veux ? Pour l'instant j'ai testé la technique suivante qui connait un bug bête :
- lors de l'affichage initial de la liste, je crée un data-tags="4 8 15 16 23 42" où chaque chiffre est un id de tag.
- A chaque clic sur une checkbox je génère un tableau vide dans lequel je "push" les valeurs des checkboxs cochées.
- je masque toute la liste
- Chaque élément du tableau est ensuite extrait avec un each, et avec un a[data-tags*="'+val+'"] je réaffiche les éléments qui correspondent.
Problème : je suis encore assez nul en Regexp aussi mon script bug dès que l'id du tag est inférieur à 10...En effet, je sélectionne du coup tous ceux qui contiennent "8" par exemple, soit 8, mais aussi 18, 28, 38, etc. Comment corriger ça simplement ? Je pourrais bien sûr augmenter de 10 tous les ids de tags comme ça le problème ne se présenterait plus, mais bon, j'imagine qu'il y a mieux ^^
Donc voilà, si quelqu'un voulait bien me donner son avis sur la meilleure méthode pour arriver à mes fins, je suis très intéressé. Merci.
Question bonus :
j'aimerais en plus que mes filtres se mettent à jour à chaque clic pour ne laisser que les pertinents pour le prochain clic (par exemple virer "viande" si on a déjà coché "végétarien"). Pour l'instant, j'envisage de récupérer tous les tags de toutes les recettes encore affichées après la méthode décrite ci-dessus et de supprimer de ma liste de tags tous ceux qui n'ont pas les bonnes valeurs. Valable comme technique ou bancal ?
Merci.
Je refais un site perso de A à Z. Je suis en ce moment à la recherche de la façon la plus efficace de permettre à un visiteur de filtrer une liste d'items (des recettes, en l'occurence) en fonction de checkboxs de tags. Là pour l'instant il y a 414 recettes avec en moyenne 5 tags chacune (de type "végétarien" ou "sucré-salé") pour plus de 70 tags différents en tout.
Premier point :
Déjà j'hésite entre deux méthodes radicalement différentes : filtrer côté serveur en php et ajax ou filtrer côté client avec jQuery. Je me suis dit - peut-être à tort - qu'il valait mieux charger une fois la liste des recettes et leurs tags associés plutôt que de faire d'incessants appels au serveur. Compte tenu des volumes concernés, ai-je raison ? (jamais il n'y aura sur ce site perso les 65k+ recettes de marmiton et il n'y aura sans doute pas beaucoup de tags supplémentaires)
Second point :
En partant du principe que jQuery est la meilleure méthode, comment réaliser efficacement ce que je veux ? Pour l'instant j'ai testé la technique suivante qui connait un bug bête :
- lors de l'affichage initial de la liste, je crée un data-tags="4 8 15 16 23 42" où chaque chiffre est un id de tag.
- A chaque clic sur une checkbox je génère un tableau vide dans lequel je "push" les valeurs des checkboxs cochées.
- je masque toute la liste
- Chaque élément du tableau est ensuite extrait avec un each, et avec un a[data-tags*="'+val+'"] je réaffiche les éléments qui correspondent.
Problème : je suis encore assez nul en Regexp aussi mon script bug dès que l'id du tag est inférieur à 10...En effet, je sélectionne du coup tous ceux qui contiennent "8" par exemple, soit 8, mais aussi 18, 28, 38, etc. Comment corriger ça simplement ? Je pourrais bien sûr augmenter de 10 tous les ids de tags comme ça le problème ne se présenterait plus, mais bon, j'imagine qu'il y a mieux ^^
Donc voilà, si quelqu'un voulait bien me donner son avis sur la meilleure méthode pour arriver à mes fins, je suis très intéressé. Merci.
Question bonus :
j'aimerais en plus que mes filtres se mettent à jour à chaque clic pour ne laisser que les pertinents pour le prochain clic (par exemple virer "viande" si on a déjà coché "végétarien"). Pour l'instant, j'envisage de récupérer tous les tags de toutes les recettes encore affichées après la méthode décrite ci-dessus et de supprimer de ma liste de tags tous ceux qui n'ont pas les bonnes valeurs. Valable comme technique ou bancal ?
Merci.