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 :

affichage de la valeur sélectionnée dans un select


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 500
    Billets dans le blog
    1
    Par défaut affichage de la valeur sélectionnée dans un select
    Bonjour,

    j'ai un select dans mon code, et je souhaite, quand un utilisateur a sélectionné une valeur, que celle-ci soit affichée par le select et non plus la valeur par défaut.
    Une recherche m'a donné un code qui fait ça :

    Code html : 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
     
    <html>
    <head>
    <script type='text/javascript'>
    function Refresh()
    {
            //JQuery
            $("#textaffiche").html($("#id").val());
    }
    </script>
    </head>
    <body>
     
     
    <span id="TextAffiche"></span>
     
    <select onkeypress="Refresh()" onchange="Refresh()" id="id" name="id">
    <option value="1">Albert</option>
    <option value="3">Bertrand</option>
    <option value="4">Cédric</option>
    <option value="6">Didier</option>
    </select>
    </body>
    </html>

    Par contre, si j'enrichis un peu ce code pour aller vers ce que je veux faire, ça ne marche plus (la valeur par défaut reste affichée)(comme je souhaite lancer le submit dès que l'utilisateur sélectionne une valeur, j'ai rajouté submit() dans la fonction js appelée sur onchange)

    Code php : 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
     
    <html>
    <head>
    <script type='text/javascript'>
    function Refresh()
    {
            //JQuery
            $("#textaffiche").html($("#id").val());
            submit();
    }
    </script>
    </head>
    <body>
     
    <span id="TextAffiche"></span>
     
    <select onkeypress="Refresh()" onchange="Refresh()" id="id" name="id">
    <option value="1">Albert</option>
    <option value="3">Bertrand</option>
    <option value="4">Cédric</option>
    <option value="6">Didier</option>
    </select>
    <?php
    if (isset($_POST['id']))
        echo $_POST['id'];
    ?>
    </body>
    </html>
    Peut-on me dire pourquoi ça ne marche plus ?

  2. #2
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 500
    Billets dans le blog
    1
    Par défaut
    J'ai progressé mais c'est pas encore au point.
    Déjà, c'est mieux de mettre le select dans une form...
    mais sur le onchange, il n'y a qu'une seule action d'exécutée (la première rencontrée dans le code)...

    Voici les 2 essais effectués :

    Code php : 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
     
    <html>
    <head>
    <script type='text/javascript'>
    function Refresh()
    {  
            submit();
            //JQuery
            $("#textaffiche").html($("#id").val());
    }
    </script>
    </head>
    <body>
    <span id="TextAffiche"></span>
     <form method="POST">
    <select id="id" name="id" onchange="Refresh();" >
    <option value="1">Albert</option>
    <option value="3">Bertrand</option>
    <option value="4">Cédric</option>
    <option value="6">Didier</option>
    </select>
    </form>
    <?php
    if (isset($_POST['id']))
        echo $_POST['id'];
    ?>
    </body>
    </html>

    Là, la première action rencontrée est le submit donc on affiche $_POST['id'] mais la valeur affichée par le select reste la valeur par défaut.



    Code php : 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
     
    <html>
    <head>
    <script type='text/javascript'>
    function Refresh()
    {  
            //JQuery
            $("#textaffiche").html($("#id").val());
    }
    </script>
    </head>
    <body>
    <span id="TextAffiche"></span>
     <form method="POST">
    <select id="id" name="id" onchange="Refresh();submit();" >
    <option value="1">Albert</option>
    <option value="3">Bertrand</option>
    <option value="4">Cédric</option>
    <option value="6">Didier</option>
    </select>
    </form>
    <?php
    if (isset($_POST['id']))
        echo $_POST['id'];
    ?>
    </body>
    </html>
    Là, la première action rencontrée est la fonction jquery mais le submit n'est pas exécuté...

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par laurentSc Voir le message
    J'ai progressé mais c'est pas encore au point....
    J'ai peur que tu régresses, au contraire...

    AUCUN besoin de JS ou jQuery ici.

    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
    <form method="post" action="">
    <?php
    $id = (isset($_POST['id']))? intval($_POST['id']) : 0;
    //    echo $id;
    ?>
    <select id="id" name="id" onchange="submit();">
    	<option value="0">...</option>
    <?php
    	$noms_arr = [
    		1 => 'Albert',
    		3 => 'Bertrand',
    		4 => 'Cédric',
    		6 => 'Didier',
    	];
    	foreach( $noms_arr as $nom_idx => $nom_val )
    	{
    		$selected = ($id == $nom_idx)? ' selected="selected"' : '';
    		echo '	<option value="'.$nom_idx.'"'.$selected.'>'.$nom_val.'</option>'."\n";
    	}
    ?>
    </select>
    </form>
    Ce serait le même principe avec des données issues d'une base de données.

    N.B. Si tu regardes/lis ce code, tu y verras ce principe.

  4. #4
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 500
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jreaux62 Voir le message

    J'ai peur que tu régresses, au contraire...
    Si tu le dis...

    J'ai bien vu le principe dans ton code de gestion de news, mais bien plus bas que dans la page que tu m'indiques...Cela dit, j'ai essayé de comprendre : tu mets en selected la valeur qui vient d'être sélectionnée, non ?

    Par contre, j'ai tenté de l'adapter à mon besoin réel (comme tu t'en doutes, ce n'est pas ce que j'avais posté, même si je reproduisais le problème), mais il est pas d'accord.

    Code php : 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
     
    $var=$pdo->select('SELECT t.id FROM `tickets` t',[]);
    ?>
    <form method="post" action=""> 
    <?php
    $id = (isset($_POST['id']))? intval($_POST['id']) : 0;
    //    echo $id;
    ?>
    <select id="id" name="id" onchange="submit();">
    <?php
    $noms_arr=[];
    foreach($var as $idticket) { array_push($noms_arr,($i++ => $idticket['id'],));}
     
    foreach( $noms_arr as $nom_idx => $nom_val )
    	{
    		$selected = ($id == $nom_idx)? ' selected="selected"' : '';
    		echo '	<option value="'.$nom_idx.'"'.$selected.'>'.$nom_val.'</option>'."\n";
    	}
    ?>
    </select>

    Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW) in C:\wamp64\www\ticket\methodes\Get_ProductName_example_normal_getter2.php on line 12
    Donc ma méthode pour construire l'array $noms_arr ne va pas. Comment faut-il faire ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Avec toi, tout devient compliqué... et tordu.

    1-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $var=$pdo->select('SELECT t.id FROM `tickets` t',[]);
    Je suppose que $var est le résultat d'un fetchAll(), c'est bien ça ?
    Réponse : oui.

    Alors $var est DÉJÀ un array !

    2- Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <select id="id" name="id" onchange="submit();">
    <?php
    $var=$pdo->select('SELECT t.id FROM `tickets` t',[]);
    foreach( $var as $row )
    	{
    		$selected = ($id == $row['id'])? ' selected="selected"' : '';
    		echo '	<option value="'.$row['id'].'"'.$selected.'>'.$row['nom'].'</option>'."\n";
    	}
    ?>
    </select>
    Ou, si tu as choisi la sortie "objet" (PDO::FETCH_OBJ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <select id="id" name="id" onchange="submit();">
    <?php
    $var=$pdo->select('SELECT t.id FROM `tickets` t',[]);
    foreach( $var as $row )
    	{
    		$selected = ($id == $row->id)? ' selected="selected"' : '';
    		echo '	<option value="'.$row->id.'"'.$selected.'>'.$row->nom.'</option>'."\n";
    	}
    ?>
    </select>

  6. #6
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 500
    Billets dans le blog
    1
    Par défaut
    Oui $var est bien retourné par un fetchAll.

    méthode de la classe de rawsrc :
    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
    /**
         * @param  mixed $sql
         * @param  mixed $values    [:tag => value] si pas de values, mettre [] en argument
         * @param  mixed $types     [:tag => PDO::PARAM_XXX] si tag absent alors PDO::PARAM_STR
         * @return array            null si erreur
         */
        public function select($sql, array $values, array $type = []): ?array
        {
            try {
                $stmt = self::$pdo->prepare($sql);
                foreach ($values as $tag => $v) {
                    $stmt->bindValue($tag, $v, $type[$tag] ?? \PDO::PARAM_STR);
                }
                $exec = $stmt->execute();
                return $stmt->fetchAll(\PDO::FETCH_ASSOC);
            } catch (\PDOException $e) {
                error_log('PDO::select - '.$e->getMessage());
                return null;
            }
        }
    La sortie est donc en associatif :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <select id="id" name="id" onchange="submit();" style="width:200px;">
    <?php
     
    foreach( $var as $row )
    	{   
    		$selected = ($id == $row['id'])? ' selected="selected"' : '';
    		echo '	<option value="'.$row['id'].'"'.$selected.'>'.$row['id'].'</option>'."\n";
    	}
    ?>
    </select>
    Par contre, le select, au lieu d'afficher la dernière valeur sélectionnée, affiche systématiquement la dernière valeur de $var....

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

Discussions similaires

  1. [PHP 5.6] Récupérer dans une variable la valeur sélectionnée dans un select
    Par modus57 dans le forum Langage
    Réponses: 9
    Dernier message: 13/11/2017, 11h43
  2. Affichage de la valeur sélectionnée dans un comboBox
    Par polymorphisme dans le forum JavaFX
    Réponses: 8
    Dernier message: 13/01/2014, 11h22
  3. valeur sélectionnée dans un <select>
    Par Oberown dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/12/2010, 21h07
  4. [XL-2007] Affichage d'une valeur sélectionnée dans une Listbox
    Par jmh51 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/07/2010, 08h15
  5. Récupérer la valeur sélectionnée dans un <select>
    Par Goupo dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 26/06/2009, 10h31

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