Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/02/2011, 11h38   #1
Futur Membre du Club
 
Philippe Rivière
Inscription : juillet 2009
Messages : 68
Détails du profil
Informations personnelles :
Nom : Philippe Rivière

Informations forums :
Inscription : juillet 2009
Messages : 68
Points : 16
Points : 16
Par défaut "tout" dans une requète sql

Bonjour,

J'aimerai savoir s'il existe un symbole "tout" dans une requète sql comme * lors d'un select pour sélectionner tout les champs d'une table, mais après un "where".

Je m'explique, voici mon code de formulaire :


Code html :
1
2
3
4
5
  service :  <SELECT name="service">
    <OPTION VALUE="">Tous</OPTION>
    <OPTION VALUE="ST">ST</OPTION>
    <OPTION VALUE="TT">TT</OPTION>
  </SELECT>

Et mon code php de requète sql :
Code php :
1
2
3
4
 
 if (empty($_POST['service']))
   {$select = "SELECT *,total-pris as dif  FROM $kiki,xtend where $kiki.nom=xtend.nom  order by id ";}
else {$select = "SELECT *,total-pris as dif  FROM $kiki,xtend where $kiki.nom=xtend.nom  and groupe='$service' order by id ";}

J'aimerai n'avoir qu'une seule ligne au niveau de la requète sql et supprimer la condition du empty($_POST['service'] .

Ainsi le code serait :

service :
Code html :
1
2
3
4
5
<SELECT name="service">
    <OPTION VALUE="symbole sql signifiant tout">Tous</OPTION>
    <OPTION VALUE="ST">ST</OPTION>
    <OPTION VALUE="TT">TT</OPTION>
  </SELECT>

Code html :
$select = "SELECT *,total-pris as dif  FROM $kiki,xtend where $kiki.nom=xtend.nom  and groupe='$service' order by id ";


Mais quel serait ce symbole?
J'ai essayé * % etc... sans succès.

Cordialement
Philippe Rivière
mac7474 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 12h25   #2
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Si vous voulez faire ceci, vous devrez utiliser l'opérateur LIKE (en spécifiant LIKE '%' pour chercher "tout") en lieu et place du =, ce qui serait contre performant...

Vous pouvez également ajouter dans votre requête une vérification pour voir si $Service = ''

Code php :
1
2
 
"SELECT *,total-pris as dif  FROM $kiki,xtend where $kiki.nom=xtend.nom  and ('$service' = '' OR groupe='$service' ) order by id ";

mais ce n'est pas beaucoup mieux !

Si le but est uniquement de n'avoir qu'une ligne de php au lieu de deux, vous pouvez faire ainsi :
Code php :
1
2
 
$select = "SELECT *,total-pris as dif  FROM $kiki,xtend where $kiki.nom=xtend.nom  ".empty($_POST['service'])?"":" and groupe='$service'"." order by id ";

Ce qui me semble être la meilleur solution
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2011, 10h07   #3
Futur Membre du Club
 
Philippe Rivière
Inscription : juillet 2009
Messages : 68
Détails du profil
Informations personnelles :
Nom : Philippe Rivière

Informations forums :
Inscription : juillet 2009
Messages : 68
Points : 16
Points : 16
Par défaut test

Bonjour,

Je viens de faire les tests de vos trois solutions.
Les deux premières fonctionnent, la troisième me renvoie ce message :
Query was empty
Code :
1
2
 
$select = "SELECT *,total-pris as dif  FROM $kiki,xtend where $kiki.nom=xtend.nom  ".empty($_POST['service'])?"":" and groupe='$service'"." order by id ";
Je suppose que cela doit être une question de syntaxe.

Quoiqu'il en soit les deux premières solutions me convienne.
Merci pour vos réponses.

Cordialement
Philippe Rivière
mac7474 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2011, 10h40   #4
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Citation:
Envoyé par mac7474 Voir le message
Bonjour,

Je viens de faire les tests de vos trois solutions.
Les deux premières fonctionnent, la troisième me renvoie ce message :
Query was empty
Code :
1
2
 
$select = "SELECT *,total-pris as dif  FROM $kiki,xtend where $kiki.nom=xtend.nom  ".empty($_POST['service'])?"":" and groupe='$service'"." order by id ";
Je suppose que cela doit être une question de syntaxe.

Quoiqu'il en soit les deux premières solutions me convienne.
Merci pour vos réponses.

Cordialement
Philippe Rivière
en regardant de plus près, vous faites un test sur
Mais dans votre requête, vous utilisez directement :
Essayez ceci :
Code :
1
2
 
$select = "SELECT *,total-pris as dif  FROM $kiki,xtend where $kiki.nom=xtend.nom  ".empty($_POST['service'])?"":" and groupe='".$_POST['service']."'"." order by id ";

Sinon, affichez $select avant exécution, pour voir la requête SQL réellement envoyée
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2011, 11h18   #5
Futur Membre du Club
 
Philippe Rivière
Inscription : juillet 2009
Messages : 68
Détails du profil
Informations personnelles :
Nom : Philippe Rivière

Informations forums :
Inscription : juillet 2009
Messages : 68
Points : 16
Points : 16
Avec ce nouveau code, cela fait pareil, et en faisant un echo de select, rien n'apparait, ce qui est en cohérence avec le message d'erreur.
Mais c'est pas grave.
mac7474 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h55.


 
 
 
 
Partenaires

Hébergement Web