IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

"tout" dans une requète sql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Points : 48
    Points
    48
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $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

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Points : 48
    Points
    48
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Points : 48
    Points
    48
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] Récupérer des variables de formulaire dans une requête SQL
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/11/2005, 18h44
  2. Plusieurs jointures dans une requête sql
    Par Pero dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/09/2005, 20h59
  3. Nom de champ variable dans une requête SQL
    Par stip dans le forum ASP
    Réponses: 2
    Dernier message: 30/09/2004, 18h02
  4. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo