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

Résolu
Havocks - 4 juin 2013 à 02:42
 Havocks - 4 juin 2013 à 13:28
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 :)
3
sylvain64520 Messages postés 130 Date d'inscription lundi 11 janvier 2010 Statut Membre Dernière intervention 7 juin 2013
4 juin 2013 à 09:36
Bonjour,

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

Sylvain
0
Rejoignez-nous