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 :

Construire une requête à partir de listes [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Construire une requête à partir de listes
    Bonjour à tous, j'ai un petit problème.

    J'ai sur ma première page des menus déroulants (9 en tout), le visiteur peut choisir une information dans une liste mais pas dans l'autre.

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
         <label>
               <select name="vegetation[]">
    		<option value='' selected="selected"></option>
    		<option value="vivace">Vivace</option>
               </select>
           </label>
           <label>
                <select name="feuillage[]">
    		<option value='' selected="selected"></option>
    		<option value="caduc">Caduc</option>
                </select>
           </label>

    en gros il peut choisir vivace dans le premier et rien dans le second.
    c'est là que ca deviens compliquer, car une fois que je récupère les données, je fait ma requete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $donnees=mysql_query("SELECT *
    FROM vegetaux WHERE vegetation='$vegetation' && feuillage='$feuillage'");
    dans mon exemple, il prend $feuillage=' ', donc dans la base il cherche les entrées ayant vegetation='vivace' et feuillage=' '
    Le problème est que feuillage peut avoir une valeur.

    La seule solution que j'ai pour le moment est de faire une requete pour chaque possibilité, mais pour 9 menus... je vous laisse calculer le nombre de possibilité.

    Y a t'il une autre solution?
    merci par avance.

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Tu peux construire ta requete au fur et a mesure un peu dans ce genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $requete = "SELECT * FROM vegetaux ";
    $condition = " WHERE ";
     
    if ($vegetation != "") {
    $requete .= $condition . " vegetation = '$vegetation'";
    $condition = " AND ";
    }
    if ($feuillage != "") {
    $requete .= $condition . " feuillage = '$feuillage '";
    $condition = " AND ";
    }

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    merci pour ta réponse rapide, j'ai fait ce que tu me propose.
    J'ai un autre petit soucis, c'est que je fais une boucle de mes résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    $requete = "SELECT * FROM vegetaux ";
    $condition = " WHERE ";
     
    if ($vegetation != "") {
    $requete .= $condition . " vegetation = '$vegetation'";
    $condition = " AND ";
    }
    if ($feuillage != "") {
    $requete .= $condition . " feuillage = '$feuillage '";
    $condition = " AND ";
    }
     
    while ($requete2 = mysql_fetch_array($requete) )
    {
    ?>
    blabla
    <? echo $requete2['vegetation']; ?>blabla<?echo $requete2['feuillage']; ?>
    blabla
    <?
    }
    ?>
    mais il n'aime pas mon array.
    j'ai voulu ajouter mysql_query( devant le SELECT, mais où refermer la parenthése?

    merci encore.

  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    tu n'as pas l'air d'avoir effectué la requete avant de faire le fetch. Il faut d'abord utiliser mysql_query() pour pouvoir récupérer les résultats.

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    oui en effet, il manquait un petit ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $requete2=mysql_query($requete);
     
    while ($requete3 = mysql_fetch_array($requete2) )
    {
    Merci beaucoup pour ton aide, tu me délivre de beaucoup d'heure de codage inutile.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/09/2012, 11h51
  2. Réponses: 3
    Dernier message: 07/04/2011, 14h38
  3. Construire une requête SQL à partir d'un fichier properties
    Par GabriHell dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 07/04/2010, 13h15
  4. Réponses: 1
    Dernier message: 07/12/2009, 09h25
  5. Difficulté à construire une requête
    Par coolcpu dans le forum Langage SQL
    Réponses: 6
    Dernier message: 08/10/2003, 00h43

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