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 :

Problème pour garder en mémoire un item selectionné dans une liste déroulante [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 20
    Points : 12
    Points
    12
    Par défaut Problème pour garder en mémoire un item selectionné dans une liste déroulante
    Bonjour,

    J'ai un soucis avec des listes déroulantes.
    J'ai 3 listes en relation avec une base de données.
    On doit choisir un critere dans chaque liste pour lancer une requete sql.
    Mon probleme est de garder en mémoire le choix fait dans la premiere liste quand on choisi dans la seconde, et pareil pour la derniere.
    Cela fonctionne avec une method POST, et j'ai besoin d'un onchange=form.submit() pour que la variable soit garder en mémoire.
    Donc ca garde la variable de la premiere liste. Et quand je choii dans une autre, ca garde la nouvelle variable mais pas celle d'avant.
    Enfin voici mon 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
    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
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
    <?php
    //connexion à la base de données 
    mysql_connect("localhost","root","") or die ("erreur de connexion!");
    mysql_select_db("essais");
     
    //liste des instants
    function listeinstant()
    {
    echo '<FORM method="POST" action="resultats.php">';
    echo '<select name="instant" id="select" onchange="form.submit()">';
    $sql="SELECT Instant FROM scenario1";
    $reqlog=mysql_query($sql);
    echo'<option value ="-1"> -- A choisir --<option>';
    while($result=mysql_fetch_row($reqlog))
    {
    echo '<option value="',$result[0].'">',$result[0],'</option>';
    }
    echo '</select>';
    echo '</FORM>';
    $instant = $_POST["instant"];
    }
     
    //liste des utilisateurs
    function listeutilisateurs()
    {
    echo '<FORM method="POST" action="resultats.php">';
    echo '<select name="utilisateurs" id="select" onchange="form.submit()">';
    $sql="SELECT Numpion FROM scenario1";
    $reqlog=mysql_query($sql);
    echo'<option value ="-1"> -- A choisir --<option>';
    while($result=mysql_fetch_row($reqlog))
    {
    echo '<option value="',$result[0].'">',$result[0],'</option>';
    }
    echo '</select>';
    echo '</FORM>';
    $utilisateurs = $_POST["utilisateurs"];
    }
     
    // liste des critères pour la moyenne
    function listecriteremoy()
    {
    echo '<FORM method="POST" action="resultats.php">';
    echo '<select name="critere" id="select" onchange="form.submit()">';
    $sql="select critere from criteremoy";
    $reqlog=mysql_query($sql);
    echo'<option value ="-1"> -- A choisir --<option>';
    while($result=mysql_fetch_row($reqlog))
    {
    echo'<option value="', $result[0],'">', $result[0],'</option>';
    }
    echo '</select>';
    echo '</FORM>';
    $critere = $_POST["critere"];
    }
     
    // fonction existe pour voir si la variable POST existe
    function existe()
    {
    // voir si la variable existe
    if (isset($_POST["critere"]))
    {
    echo 'La variable choisi est: ';
    echo $_POST["critere"];
    echo '. ';
    }
    else
    {
    echo 'Aucune variable n\'est selectionnées. ';
    }
    if (isset($_POST["instant"]))
    {
    echo 'L\'instant choisi est T';
    echo $_POST["instant"];
    echo '. ';
    }
    else
    {
    echo 'Aucun instant n\'est selectionné. ';
    }
    if (isset($_POST["utilisateurs"]))
    {
    echo 'L\'utilisateur choisi est l\'utilisateur ';
    echo $_POST["utilisateurs"];
    echo '. ';
    }
    else
    {
    echo 'Aucun utilisateur n\'est selectionné. ';
    }
    }
     
    //fonction moyenne
    function moyenne($critere)
    {
    $moyenne1=mysql_query("SELECT AVG(".$critere.") FROM scenario1");
    $moyenne=mysql_result($moyenne1,0);
    $moyenne=(float)($moyenne);
    print round($moyenne,2);
    }
    Savez-vous comment faire pour que ma page ne soit pas réinitailisée à chaque fois qu'on choisi une variable?
    Merci
    Caro

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 217
    Points
    8 217
    Billets dans le blog
    17
    Par défaut
    Lorsque tu affiches ton premier <select> (instant ??) et notamment ses <option> il faut que tu vérifies si $_POST['instant'] est défini ou pas. S'il est défini et que la valeur du <option> à afficher == $_POST['instant'] alors il suffit de rajouter un selected au <option>.

    PS : tes <select> ont tous les même ID alors qu'un ID doit être unique sur une page donnée.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Mon $_POST["instant"] est défini quand je choisi une variable dans la liste, mais avant que je choisisse, un warning s'affiche.
    Et je ne sais pas où ajouter le selected
    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
    function listeinstant()
    {
    echo '<FORM method="POST" action="resultats.php">';
    echo '<select name="instant" id="select" onchange="form.submit()">';
    $sql="SELECT Instant FROM scenario1";
    $reqlog=mysql_query($sql);
    <option selected>ICI??</option>
    echo'<option value ="-1"> -- A choisir --<option>';
    while($result=mysql_fetch_row($reqlog))
    {
    echo '<option value="',$result[0].'">',$result[0],'</option>';
    }
    echo '</select>';
    echo '</FORM>';
    $inStant = $_POST["instant"];
    }
    Je vais changer les Id, merci.

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 217
    Points
    8 217
    Billets dans le blog
    17
    Par défaut
    Essaie comme ça :

    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
    function listeinstant()
    {
        echo '<form method="post" action="resultats.php">' ;
        echo '<select name="instant" onchange="form.submit()">';
        $sql="SELECT Instant FROM scenario1";
        $reqlog=mysql_query($sql);
        echo'<option value ="-1"> -- A choisir --<option>';
        while($result=mysql_fetch_row($reqlog)) {
            if ( isset($_POST['instant']) && $_POST['instant'] == $result[0] ) {
                $selected = ' selected' ;
            } else {
                $selected = '' ;
            }
            echo "<option value='$result[0]'$selected>$result[0]</option>";
        }
        echo '</select>';
        echo '</FORM>';
    }
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Ok je vais essayer ça et te redire. Merci.

    En effet ça fonctionne correctement!
    Merci beaucoup de ton aide!

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

Discussions similaires

  1. [MySQL] afficher l'item selectionné dans une liste déroulante
    Par TOSCAN dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/02/2009, 16h21
  2. Réponses: 1
    Dernier message: 20/12/2006, 16h16
  3. Réponses: 3
    Dernier message: 26/09/2006, 11h06
  4. Réponses: 1
    Dernier message: 28/07/2006, 09h17
  5. Réponses: 4
    Dernier message: 27/12/2005, 08h24

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