Page 1 sur 1

Question avec WHERE

Posté : 27 déc. 2005, 16:28
par bins007
Bonjour,

Voilà j'ai fait un moteur de recherche qui cherche des informations de ma base de donnée MYSQL.

Donc il y'a un formulaire contenant une liste déroulante avec "Tous", "En ligne", "Hors ligne".

Donc je cherche dans la base de donnée avec sql :
"SELECT * FROM compte WHERE statut = '$statut'"

La variable $statut contient la valeur de la liste déroulante du formulaire.

Mais comment faire pour que si la valeur de la liste déroulante est "Tous", ça cherche tous les statut ?

J'ai mal expliqué mais je peux pas faire mieux désolé

Posté : 27 déc. 2005, 16:42
par iclo
Une petite recherche sur le forum t'aurais renseigné un problême assez similaire à été traité il y a pas longtemps.

Tu testes la valeur de ce que te renvoit le formulaire avant, et en fonction des différentes valeurs tu construits ton query par concaténation. Si le choix est tous tu n'ajoute pas de critère dans la clause where.
Il vaudrait mieux ne pas stocker les status en clair, mais des codes dans un type int (1=en ligne, 2=hors ligne, etc) pour éviter de la redondance et accélerer les accès.

Posté : 27 déc. 2005, 18:15
par bins007
Ok merci

Mais je pensais à une autre solution, car celle qui tu propose est très longue car il y a plein de champ du formulaire

Ma solution est au lieu de mettre WHERE champ = valeur, mettre WHERE champ LIKE valeur.

Et donc la valeur de "Tous" serait %

Est ce une bonne solution ?

Posté : 27 déc. 2005, 18:24
par iclo
Si tu as beaucoup de critère de recherche ça va être très lourd, l'opérateur like étant pas définition plus gourmant en ressource. le plus simple c'est de construire une requêtte "pas à pas" avec des tests, et comme je te l"ai indiqué de ne pas stoké des status en format texte mais bien sous forme de int.