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

Langage PHP Discussion :

liste déroulante alimentée depuis une base de données


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Points : 6
    Points
    6
    Par défaut liste déroulante alimentée depuis une base de données
    Bonjour à tous.
    Voilà j'ai créé en PHP une liste déroulante alimentée par une base de donnée MYSQL et maintenant je souhaiterais, à partir de la liste déroulante, afficher toute les informations relatives au choix. Je m'explique : ma liste affiche des gsm et je voudrais, après avoir choisi un gsm et cliquer sur un bouton "valider", afficher sur la même page (juste en dessous) toute les informations relatives à ce gsm.
    voici le code :
    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
    <?php
    $connexion=mysql_connect('localhost','root',"") or die ("connexion impossible.");
    $db=mysql_select_db('projet',$connexion) or die ("base de données non accessible");
    ?>
    <p>Choisissez un gsm: </p>
      <select name="menugsm" id="menugsm">
    <?php
    $resultat=mysql_query("select Nom from gsm ") or die ("requète non executé");
    if (! $resultat) { echo "Erreur requete"; exit;} 
    while ($ligne=mysql_fetch_array($resultat))
    {
    ?>
    <option><?php echo ''.$ligne['Nom'].'';?> </option>
    <?php
    }
    mysql_close($connexion);
    ?>

    Voila je voulais savoir ce qu'il faut que j'ajoute pour avoir un bouton et comment afficher ces informations dans ma page !!
    merci infiniment

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Si tu veux que ta liste envoie quelque chose, il faut mettre des attributs value à tes options. Le plus simple, c'est de mettre l'id (la clé primaire de ta table) comme valeur et à la récupération du formulaire, aller chercher les informations dans la table à partir de l'id.

    Les formulaires et PHP5
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    j'ai modifier le code
    Vous pouvez le vérifier SVP

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Untitled Document</title>
    </head>
    <?php
    session_start();
    ?>
    <body>
     
     
    <!-- CONTENT --> 
    <div class="content-center"> 
    <div id="products-list"> 
    <header> 
    <p class="counter"><strong>01-08</strong> sur 40 créations</p> 
     
     
    <form method="GET" action="">
    <?php
    mysql_connect("127.0.0.1","root","") or die("erreur de connexion au serveur".mysql_error());
    // Ouverture de la base de données Terminale
    mysql_select_db("projet") or die ("erreur de connexion à la base projet");
    ?>
     
    <b>Nos GSM</b> </td><td>
     <select name="trie" action="" style="width:230px"> 
    <option>----GSM----</option> 
    <?php 
    $sql = "select lib_gsm from info_gsm"; 
    $rep = mysql_query("$sql") ; 
    while($data = mysql_fetch_assoc($rep)) 
    { 
    echo "<option value='nomG'>".$data['lib_gsm']."</option>"; 
    } 
     
    ?> 
    </select> 
     
    </form> 
     
    <div class="products"> 
     
    <?php 
    if(isset($_GET['trie'])) { 
    switch($_GET['trie']) { 
    case 'nomG': 
    $tri = $data['lib_gsm']; 
    break; 
    } 
     
     
    mysql_connect("127.0.0.1","root","") or die("erreur de connexion au serveur".mysql_error());
    // Ouverture de la base de données Terminale
    mysql_select_db("projet") or die ("erreur de connexion à la base projet");
     
    query="SELECT * FROM info_gsm ORDER BY ".$tri." "; 
     
    // On affiche chaque entrée une à une 
     
    $res = mysql_query($query) or die(mysql_error());
     
     
    		while ($donnees = mysql_fetch_assoc($res)) {
     
    ?> 
    <p> 
    <article> 
    <figure><a href="produit.php?ID=<?php echo $donnees['id_info']; ?>" title="Informations produits"><img src="<?php echo $donnees['photo']; ?>" alt="" /></figure> 
    <figcaption> 
    <h2> 
    <span class="title"><?php echo $donnees['prix']; ?>€</span> 
    <span class="marque"><?php echo $donnees['marques']; ?> <?php echo $donnees['ref']; ?></span> 
    <br /> 
    </h2> 
    <br /> 
    </figcaption> 
    </article> 
    </em> 
    </p> 
     
    </body>
    </html>

  4. #4
    Membre régulier Avatar de moogli
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 58
    Points : 102
    Points
    102
    Par défaut
    salut,

    il faut mettre en "value" des "option" la clefs primaire de la table GSM (le id de Celira).

    dans ton code la valeur choisie sera toujours nomG

    une option se définie ainsi
    <option value="valeur transmise">libellé affiché</option>

    donc le code pourrait être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <select name="trie" action="" style="width:230px"> 
    <option>----GSM----</option> 
    <?php 
    $sql = "select idGsm, lib_gsm from info_gsm"; 
    $rep = mysql_query("$sql") ; 
    while($data = mysql_fetch_assoc($rep)) 
    { 
    echo '<option value="'.$data['idGsm'].'">'.$data['lib_gsm'].'</option>'; 
    }
    ?>
    en considérant que idGsm soit la clef primaire de la table info_gsm (ce dont je doute ).

    pour la validation il faut tester si $_GET['trie'] existe et l'utiliser dans le prédicat de la requete SQL (le where) puisse que je suppose qu'il s'agit d'une restriction et non pas seulement d'ordonner les infos.

    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    $query = 'SELECT * FROM info_gsm where idGsm='.mysql_real_escape_string($_GET['trie']);
    ?>
    attention la requete ne doit être exécutée ainsi que si $_GET['trie'] existe.
    s'il n'existe pas la requete n'a pas lieux d'être (je pense).

    @+

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Entre parenthèse si je peux me permettre j'ai remarqué une petite erreur qui peut avoir des conséquences dans vos autres pages.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    session_start();
    ?>
    il faut le placer avant le code html... sinon cela ne marchera pas.
    C'est une règle importante des sessions.

Discussions similaires

  1. Réponses: 11
    Dernier message: 09/03/2009, 12h47
  2. Liste déroulante devant modifier une base de donnée
    Par Koen_bass dans le forum Langage
    Réponses: 21
    Dernier message: 16/12/2008, 11h53
  3. Charger une liste déroulante à partir d'une base de donnée
    Par mr_simon dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 04/07/2007, 08h32
  4. [AJAX] lier deux listes déroulantes alimenté par une base de données (Mysql)
    Par arnaudperfect dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/04/2007, 01h06
  5. Réponses: 1
    Dernier message: 20/03/2007, 09h24

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