Bonjour,
Actuellement, j'ai un code qui fonctionne bien mais il y a un morceau qui ne réagit pas comme je le souhaiterais.
Voici le contexte :
J'ai une liste d'articles qui s'affiche sur ma page.
Ces articles sont associés à des catégories ce qui me permet de les filtrer.
Pour filtrer les articles, j'ai un champs texte et une liste de catégories (cases à cocher).
Je peux donc combiner ma recherche mots clés / catégories.
Le hic :
Je coche les catégories "oiseaux" et "caraïbe". Je souhaiterais donc lister les articles qui appartiennent aux deux catégories, or aujourd'hui je liste tous les articles qui appartiennent à oiseaux et tous les articles qui appartiennent à "caraïbe".
Ma requête effectue donc des "OR" et j'aimerais des AND.
Technique :
Deux tables sont concernées :
La table "article" qui contient tous les articles et la table "rel_art_categ" qui permet de faire la jointure entre les catégories et les articles via leurs ID.
Quand je coche une catégorie, son ID est inséré dans un tableau JavaScript que je récupère ensuite en PHP.
Voici ma requête SQL simplifiée :
Je pense qu'il est possible de faire ce que je souhaiterais avec une boucle mais j'ignore comment et je suppose qu'il y a une méthode plus efficace.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $valueCheck = $_REQUEST['checkVal']; // Mon tableau d'ID $categValue = implode(",", $valueCheck); // Que je transforme en chaîne "SELECT DISTINCT article.art_id, art_date, art_auteur, art_titre, art_desc, art_text, rel_art_categ.art_id FROM `article`, `rel_art_categ` WHERE rel_art_categ.categ_id IN ($categValue) // où l'id de la catégorie est présente dans le tableau AND rel_art_categ.art_id = article.art_id ORDER BY art_date DESC"
Merci d'avance pour votre aide.








Répondre avec citation




Partager