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 :

Récupération de données avec une liste déroulante


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Points : 29
    Points
    29
    Par défaut Récupération de données avec une liste déroulante
    Bonjour,
    Je ne sais où mettre ce post, il concerne en partie HTML...

    Le besoin est de remplir un tableau construit à partir des choix utilisateurs dans le cadre d'une recherche détaillée destinée aux agriculteurs et afin d'affiner un choix parmi 400 produits différents qui leur sont destinés.

    Dans un formulaire, je choisi d'abord un type de sol (menu à choix simple):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <select name="sol" id="sol">
    <option value="%">Indifférent</option>
    <option value="Tout sol">Tout sol</option>
    <option value="Sol frais et humifère">Sol frais et humif&egrave;re</option>
    <option value="Tout sol drainant">Tout sol drainant</option>
    </select>
    Ensuite le type d'exposition (menu à choix simple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <select name="expo" id="expo">
    <option value="%">Indifférent</option>
    <option value="Plein soleil">Plein soleil</option>
    <option value="Soleil, mi-ombre">Soleil, mi-ombre</option>
    </select>
    Pour finir la hauteur (menu à choix multiple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <select name="hauteur" size="3" multiple="multiple" id="hauteur">
    <option value="%">Indifférent</option>
    <option value="0,50 cm">0,50 cm</option>
    <option value="0,75 cm">0.75 cm</option>
    <option value="1 m">1 m</option>
    <option value="1,25 m">1,25 m</option>
    <option value="1,50 m">1,50 m</option>
    </select>
    J'ai d'autres critères plus précis encore mais ce n'est pas la question.

    C'est la fin du form, il est envoyé en POST à la page résultat dans laquelle se trouve la requête Mysql avec la récupération de toutes les variables POST.
    J'obtiens donc les solutions de produits(tirés de la BDD) et respectant les choix demandés, leur nombre est variable.
    MAIS lorsque je spécifie 2 ou 3 hauteurs à la fois comme critère de hauteur, je ne les obtiens jamais toutes mais apparaissent alors toutes les lignes correspondantes seulement à la dernière (la plus haute) valeur demandée.
    J'ai essayé en vain de changer le menu "hauteur" en checkbox, le comportement est le même.
    J'ai essayé à partir de valeurs décimales au lieu de VARCHAR, c'est pareil.
    Voilà, j'espère que c'est clair. Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="hauteur[]" size="3" multiple="multiple" id="hauteur">
    Tu recuperes ainsi tes valeurs dans un tableau $_POST['hauteur']

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Points : 29
    Points
    29
    Par défaut
    Bon, les crochets placés sur name="hauteur[]" obtiennent un tableau vide.
    Je livre ici ma requête de récupération des données du formulaire, affichées dans un tableau:


    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
    <?php
    $colsol_recup = "%";
    IF (isset($_POST['sol'])) {
      $colsol_recup = (get_magic_quotes_gpc()) ? $_POST['sol'] : addslashes($_POST['sol']);
    }
    $colhauteur_recup = "%";
    IF (isset($_POST['hauteur'])) {
      $colhauteur_recup = (get_magic_quotes_gpc()) ? $_POST['hauteur'] : addslashes($_POST['hauteur']);
    }
    $colexpo_recup = "%";
    IF (isset($_POST['expo'])) {
      $colexpo_recup = (get_magic_quotes_gpc()) ? $_POST['expo'] : addslashes($_POST['expo']);
    }
    mysql_select_db($database_essai, $essai);
    $query_recup = sprintf("SELECT * FROM vegetaux WHERE vegetaux.expo LIKE '%s' and vegetaux.sol LIKE '%s' and vegetaux.hauteur LIKE '%s' ", $colexpo_recup,$colsol_recup,$colhauteur_recup);
    $recup = mysql_query($query_recup, $essai) OR die(mysql_error());
    $row_recup = mysql_fetch_assoc($recup);
    $totalRows_recup = mysql_num_rows($recup);
    ?>
    print_r ($_POST); donne ceci :Array ( [expo] => % [sol] => % [hauteur] => Array ( [0] => 2 m [1] => 4 m ) [Submit] => Envoyer )
    lorsque j'ai sélectionné 2 hauteurs.
    Je ne vois plus.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Bon, les crochets placés sur name="hauteur[]" obtiennent un tableau vide.
    Tu n'as pas un tableau vide.
    Tu as un tableau avec 2m et 4m.

    Apres ce que tu fais n'a pas de sens : on ne peut pas faire addslashes sur un tableau ou l'inserer dans une requete SQL.
    A toi voir comment tu veux traiter ces deux valeurs dans la structure de ta table.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Points : 29
    Points
    29
    Par défaut
    Oui, c'est vrai, mais ce que je veux obtenir, ce n'est pas 2m et 4m mais les lignes qui correspondent à ces valeurs.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Change la valeur des <option> alors.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Points : 29
    Points
    29
    Par défaut
    Merci à tous,
    la fonction Implode est venue à mon secours.
    Tout va bien.

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

Discussions similaires

  1. Récupération des données d'une liste déroulante
    Par DoubleZeroCed dans le forum Langage
    Réponses: 4
    Dernier message: 11/01/2011, 18h22
  2. [AC-2007] Filtrage de données avec une liste déroulante
    Par Anthoto dans le forum IHM
    Réponses: 1
    Dernier message: 07/01/2011, 19h49
  3. [MySQL] récupération de données dans une liste déroulante
    Par maleck dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/03/2010, 06h13
  4. Récupération de données via une liste déroulante
    Par Requiem11 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 10/04/2009, 12h18
  5. récupération des données via une liste déroulante
    Par rahan_dave dans le forum Access
    Réponses: 1
    Dernier message: 13/10/2005, 12h27

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