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 :

[PHP-JS] Récupération valeur d'une liste déroulante


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 303
    Points : 143
    Points
    143
    Par défaut [PHP-JS] Récupération valeur d'une liste déroulante
    Bonjour,

    J'éssaie de récuperer la valeur de ma liste déroulante par le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="mapage?ref='.$select[0].'">Valider</a>';
    Hélas, ma variable $select n'affiche rien !
    De ce fait, avez-vous une idée pour récupérer la valeur de la listbox?

    c'est l'exemple de "Gérer des listes déroulantes":
    http://php.developpez.com/sources/?p...rms#gestlistes

    Merci d'avance.

    Yves

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Points : 206
    Points
    206
    Par défaut
    Ta liste déroulante fait-elle partie d'un formulaire ?
    Nulla dies sin linea

  3. #3
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 303
    Points : 143
    Points
    143
    Par défaut
    Hee non ?!

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Points : 216
    Points
    216
    Par défaut
    quel est le code de ta page où est le formulaire?
    quel est le code source (html) que tu obtiens quand le formulaire s'affiche?

    sans ça il est dur de deviner comment tu as interprété le tutoriel/exemple
    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait.
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.


    Spidercochon, spidercochon, il peut marcher au plafond
    ...MM ......Voici Spidercochon. Aidez le à conquérir le monde
    E(....)~....en le reproduisant.
    ...w

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 85
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par vandeyy
    Hee non ?!
    Ben il faut! Tout input doit appartenir à un formulaire, sinon, tu peux pas accèder à ses valeurs.
    Graphiquement, tu peux te passer de la balise de formulaire et voir ta liste dans la page. Mais c'est comme tout un tas de balises: elles ne sont pas nécessaires et de nombreux navigateurs s'en passent, mais les règles du html les imposent.

    rajoute une balise <form action="mapage">...</form> et ça ira beaucoup mieux.

  6. #6
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 303
    Points : 143
    Points
    143
    Par défaut
    VOILI VOILA mon fichier php !

    Pouvez-vous adapter le fichier afin de trouver une solution ?!

    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
    <?php
    $table_ref = array (
    1 => 'un' ,
    2 => 'deux' ,
    3 => 'trois' ,
    4 => 'quatre' ,
    5 => 'cinq' ,
    6 => 'six' ,
    7 => 'sept Sécurité' ,
    8 => 'huit' ,
    9 => 'neuf' ,
    10 => 'dix',
    11 => 'onze'
    ) ;
    function listbox ( $name , $array_value = array() , $array_selected , $multiple = 0 , $size = 1 )
    {
            $select = '<select' . ( ( $multiple == 1 ) ? ' multiple name="' . $name . '[]"' : ' name="' . $name . '"' ) . 
    ' size="' . $size . '">' . "n" ;
     
                foreach ( $array_value as $key => $value )
                {
                    $select .= '<option value="' . $key . '"' .
                    ( ( $multiple == 1 ) ? ( in_array ( $key , $array_selected ) ? ' selected="selected"' : '' ) : 
    ( $key == $array_selected ? ' selected="selected"' : '' ) ) .
                    '>' . $value . '</option>' . "n" ;
                }
     
            $select .= '</select>' ;
            return $select ;
    }
    print("
    <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"
    \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">
    <html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">
    <head>
    <meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-1\" />
    <meta name=\"description\" content=\"description\" />
    <meta name=\"keywords\" content=\"keywords\" />
    <meta name=\"author\" content=\"your-name  / test /\" />
    <title></title>
    </head>
    
    <body>
    <form>
    ");
     
    //echo listbox ( 'table_ref' , $table_ref , ( isset ( $_POST['table_ref'] ) ? $_POST['table_ref'] : 1 ) ) ;
    echo listbox ( 'table_ref' , $table_ref , 1 ) ;
     
    echo '<a href="upd_gen_reef.php?tb_ref='.$table_ref[0].'">Valider</a>';
    print(" 
    </form>
    </body>
    </html> ");
     
    ?>
    Le but du jeu c'est d'appeler une page qui a pour argument la valeur sélectinnée dans la liste déroulante.

    Merci Yves

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 85
    Points : 80
    Points
    80
    Par défaut
    petits conseils:
    - quand tu envoie ton code, essaie de le simplifier pour le rendre plus lisible.
    - essaie aussi de tout faire tenir dans la page pour tout avoir sous les yeux

    ...

    D'après ce que j'ai saisi, tu veux faire un lien qui, si tu sélectionne le troisième élément de ta liste, t'affiche la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    upd_gen_reef.php?tb_ref=trois
    Si c'est le cas, ... repense à tes cours de php, javascript, ...

    Voici une proposition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ...
    // 'table_ref' devient 'tb_ref'
    echo listbox ( 'tb_ref' , $table_ref , 1 ) ;
    ...
    // plus de lien:
    // echo '<a href="upd_gen_reef.php?tb_ref='.$table_ref[0].'">Valider</a>';
     
    // mais un bouton
    echo '<input type="submit" name="Valider">';
     
    print("</form>\n</body>\n</html>");
    ... normalement, ça devrait le faire!

  8. #8
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 303
    Points : 143
    Points
    143
    Par défaut
    Merci pour ta réponse.

    Peux-tu me préciser ton idée car je ne vois plus le lien avec la page appelée (upd_gen_reef.php?).

    En outre, ce n'est pas le trois en lettre mais en chiffe (valeur)!

    Merci à toi.

    Yves

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 85
    Points : 80
    Points
    80
    Par défaut
    Peux-tu me préciser ton idée car je ne vois plus le lien avec la page appelée (upd_gen_reef.php?).
    Dans ce cas, dans ta balise de formulaire, il faut préciser la page qui doit être ouverte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <form action="upd_gen_reef.php">
    ...
    </form>
    Dans ce cas, dans ton script php, tu pourras récupérer la valeur de ta liste dans la variable

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Points : 216
    Points
    216
    Par défaut
    argh
    l'exemple donné est fait par un quelqu'un qui s'y connait bien et qui donc propose une fonction qui te créé automatiquement un menu déroulant
    c'est très bien fait

    mais quand on débute on peut commencer avec les bases, c'est à dire définir avec ses mimines le menu déroulant
    dans ton cas en html ça pourrait donner :


    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
    <form>
    <select name="table_ref">
    <option value="1" selected="selected">un</option>
    <option value="2">deux</option>
    <option value="3">trois</option>
    <option value="4">quatre</option>
    <option value="5">cinq</option>
    <option value="6">six</option>
    <option value="7">sept Sécurité</option>
    <option value="8">huit</option>
    <option value="9">neuf</option>
    <option value="10">dix</option>
    <option value="11">onze</option>
    </select>
    </form>
    ce qui est plus simple à comprendre.

    bref
    j'aime bien ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo listbox ( 'table_ref' , $table_ref , 1 )
    cela signifie que tu nommes ton menu déroulant $table_ref soit le même nom que le premier tableau associatif qui contient la liste des options...


    ensuite il y a un problème de comprehension du fonctionnement du php.
    le php n'est pas dynamique et est orienté serveur.
    ton lien sur valider est créé sur le serveur. quand tu modifies ton choix dans la liste ça change du coté client (toi) mais pas serveur.
    donc ça ne risque pas de marcher.

    et résultat quand tu appelles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="upd_gen_reef.php?tb_ref='.$table_ref[0].'">Valider</a>';
    tu appeles la valeur 0 du tableau associatif... qui commence à 1. Donc rien n'apparait.


    bon je te propose des modifs légères sur ton script principal (dans mon prochain post) pour obtenir ce que tu veux.

    mais essaye de comprendre ce que fais le code que tu utilises sinon tu vas revenir ici souvent
    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait.
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.


    Spidercochon, spidercochon, il peut marcher au plafond
    ...MM ......Voici Spidercochon. Aidez le à conquérir le monde
    E(....)~....en le reproduisant.
    ...w

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Points : 216
    Points
    216
    Par défaut
    les modifs sont en rouges
    dis moi ce que tu obtiens

    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
    <?php
    $table_ref = array (
    un => 'un' ,
    deux => 'deux' ,
    trois => 'trois' ,
    quatre => 'quatre' ,
    cinq => 'cinq' ,
    six => 'six' ,
    sept  => 'sept Sécurité' ,
    huit => 'huit' ,
    neuf => 'neuf' ,
    dix => 'dix',
    onze => 'onze'
    ) ;
    function listbox ( $name , $array_value = array() , $array_selected , $multiple = 0 , $size = 1 )
    {
            $select = '<select' . ( ( $multiple == 1 ) ? ' multiple name="' . $name . '[]"' : ' name="' . $name . '"' ) . 
    ' size="' . $size . '">' . "n" ;
            
                foreach ( $array_value as $key => $value )
                {
                    $select .= '<option value="' . $key . '"' .
                    ( ( $multiple == 1 ) ? ( in_array ( $key , $array_selected ) ? ' selected="selected"' : '' ) : 
    ( $key == $array_selected ? ' selected="selected"' : '' ) ) .
                    '>' . $value . '</option>' . "n" ;
                }
            
            $select .= '</select>' ;
            return $select ;
    }
    print("
    <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"
    \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">
    <html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">
    <head>
    <meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-1\" />
    <meta name=\"description\" content=\"description\" />
    <meta name=\"keywords\" content=\"keywords\" />
    <meta name=\"author\" content=\"your-name  / test /\" />
    <title></title>
    </head>
     
    <body>
    <form action=\"upd_gen_reef.php\" method=\"GET\">
    ");
     
    //echo listbox ( 'table_ref' , $table_ref , ( isset ( $_POST['table_ref'] ) ? $_POST['table_ref'] : 1 ) ) ;
    echo listbox ( 'tb_ref' , $table_ref , 1 ) ;
     
    echo '<input type="submit" value="Valider">';
    print(" 
    </form>
    </body>
    </html> ");
     
    ?>
    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait.
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.


    Spidercochon, spidercochon, il peut marcher au plafond
    ...MM ......Voici Spidercochon. Aidez le à conquérir le monde
    E(....)~....en le reproduisant.
    ...w

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Points : 216
    Points
    216
    Par défaut
    explications du pourquoi du comment.

    changement du nom de la variable du menu déroulant pour éviter les confusions
    en
    changement du tableau associatif $table_ref
    en effet
    dans le tableau
    correspond à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="2">deux</option>
    et la valeur que l'on récupère est celle dans value (donc le 2), voilà pourquoi tu avais des chiffres.
    d'ou le changement, vu que c'est un tableau associatif on peut mettre ce qu'on veut à gauche


    autre changement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action=\"upd_gen_reef.php\" method=\"GET\">
    ton formulaire tout simple devient un formulaire qui va envoyer son résultat à la page upd_gen_reef.php
    par la méthode GET (c'est à dire en passant les variables par l'url).

    le bouton pour valider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" value="Valider">
    n'a pas reçu de nom (name) pour justement éviter que sa valeur soit affichée dans l'url (c pas très joli-joli j'avoue).



    la seule variable qui sera passée dans l'url sera donc celle du menu déroulant
    d'ou l'intérêt de l'avoir appelée tb_ref

    car finalement en cliquant sur le lien
    on appellera la page
    upd_gen_reef.php?tb_ref=[valeur en lettre de tb_ref)


    tu as ce que tu veux avec le minimum de modifs sur ton script...
    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait.
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.


    Spidercochon, spidercochon, il peut marcher au plafond
    ...MM ......Voici Spidercochon. Aidez le à conquérir le monde
    E(....)~....en le reproduisant.
    ...w

  13. #13
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 303
    Points : 143
    Points
    143
    Par défaut
    Un tout grand MERCI pour vos explications !

    Yves

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/06/2008, 11h20
  2. Réponses: 5
    Dernier message: 12/06/2007, 10h21
  3. Réponses: 7
    Dernier message: 19/05/2007, 11h33
  4. Réponses: 11
    Dernier message: 26/04/2007, 10h40
  5. Réponses: 12
    Dernier message: 02/05/2006, 19h37

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