Faire un SELECT si l'un des choix est dans un champs

[Résolu]
Signaler
-
 Havocks -
Bonjour,

J'ai un petit soucis, qui, je suis sûr doit être tout bête, mais je ne trouve pas la solution.
Imaginons, cette table :

TABLE image (id(11),couleurs(200))


Dans couleur j'enregistre les couleurs dominante de l'image comme ceci: "'Rouge','Bleu','Vert'"

Mon problème, viens quand j’essaie de faire une requête du genre, "trouver les images qui ont du bleu" ... ou "trouver les images qui ont du vert OU du rouge"

J’étais partis sur une base de :

$choix = "'Vert','Rouge'";
SELECT * FROM image WHERE couleurs IN (".$choix.");


Mais forcement, ça ne peu pas marcher vu que "couleurs" est une chaine de plusieurs couleurs.
Il faut que je revoit ma façon d'enregistrer les différentes couleurs dans "images" (avec un champs par couleur par exemple) ou bien y a t il une autre solution ?

Merci d'avance.

2 réponses

Merci, sylvain64520,

Mais avec juste like '%".$choix."%' , ça ne pouvais pas marcher car l'ordre des choix pouvait être différent de l'ordre d'enregistrement dans la BDD.
Par exemple, couleurs pouvait être "'Rouge','Bleu','Vert'" et choix: "'Bleu','Vert','Rouge'".
Mais tu m'a grandement aiguillée sur la solution, j'ai fait :

$choix = str_replace(',','%" OR couleurs LIKE "%',$choix);
SELECT * FROM image WHERE (couleurs LIKE ".$choix.");


Merci :)
Messages postés
130
Date d'inscription
lundi 11 janvier 2010
Statut
Membre
Dernière intervention
7 juin 2013

Bonjour,

Tu peux modifier la clause 'where' de ta requête en : where couleurs like '%".$choix."%'
Ca devrait l'faire.

Sylvain