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 :

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"
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.

Merci d'avance pour votre aide.