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 dynamique avec valeur unique de selected


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations forums :
    Inscription : Août 2012
    Messages : 37
    Points : 21
    Points
    21
    Par défaut Liste dynamique avec valeur unique de selected
    Bonjour à toutes et à tous,

    Je suis confronté à un problème relativement simple pour lequel je n'arrive pas à ma diriger pour trouver la solution.

    Je voudrais créer une liste dynamique qui contient 4 valeurs. La liste déroulante doit afficher une des 4 valeurs par défaut (selected) qui ne devra pas apparaître une seconde fois dans la liste déroulante.

    Cette liste reçois ses paramètres ou non d'un $_POST donc $_POST['size'].

    [edit] J'ai failli oublié, j'ai vu sur pas mal de site que leur liste déroulante ne composait pas de valeur numérique mais des chaines de caractères. Exemple dans mon cas je voudrais que les valeurs utilisées soit array('20', '25', '30', '40') mais que la liste affiche pour 20 par exemple tiny, 25 > small, 30 medium, 40 large. Le problème c'est que quand le form a été envoyé, la page qui reçoit affiche le selected avec son value et non son selected:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="<?php if(isset($size)){echo $size;}else{echo 40;}?>"selected="selected"><?php if(isset($size)){echo $size;}else{echo 40;}?></option>
    Pour essayer d'être plus clair, une fois le formulaire envoyé, l'option qui reçoit le $_POST et qui est selected doit afficher tiny et non 25 par exemple.

    Voilà mon code qui rassemble toutes(?) les conditions nécessaires à l'assemblage du code final. C'est ce que je n'arrive pas à faire!

    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
     
    <?php
    // Tableau qui contient les valeurs que la liste déroulante DOIT contenir
    $size_list = array('20', '25', '30', '40');
     
    // Le fameux 'selected' prend une valeur du tableau qui ne doit être présente qu'une fois dans la liste déroulante
    echo "<option value='".$_POST['size']."' selected='selected'>".$_POST['size']."</option>";
     
    // L'idée : affiche toute les size sauf celle utilisée pour selected
    if(isset($_POST) AND $_POST['size'] == $size_list[]) {
    }
     
    foreach ($size_list as $size) {
    	echo "<option value='".$size."'>".$size."</option>";
    }
    ?>
    Je pense que c'est assez simple, mais je patauge!

    Merci de votre aide!

  2. #2
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    Quelque chose 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
    <?php
    // Tableau qui contient les valeurs que la liste déroulante DOIT contenir
    $size_list = array(
    			20 => 'tiny', 
    			25 => 'small', 
    			30 => 'medium', 
    			40 => 'large'
    		);
     
    foreach ($size_list as $size => $name) {
    	if(intval($_POST['size']) == $size){
    		echo "<option value='".$size."' selected='selected'>".$name."</option>";
    	}else{
    		echo "<option value='".$size."'>".$name."</option>";
    	}
    }
    ?>
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations forums :
    Inscription : Août 2012
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Merci à toi Seb33300, le problème valeur/nom est solutionné mais subsiste celui du nom doublon. Comme tu peux le voir dans mon exemple, la variable $post_size a pour valeur 25 ce qui correspond à small. Quand on lance le script, il y a toujours un doublon de small. On a donc

    > small (selected = $post_size)
    > tiny
    > small (ne devrait pas apparaître en doublon)
    > medium
    > large

    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
     
    <form action="monform.php" method="post">
      <p>
        <label for="fontSize">Taille :</label>
        <select id="fontSize" name="fontSize">
     
    		<?php
     
            $post_size = 25;
     
            $size_list = array(
                        20 => 'tiny', 
                        25 => 'small', 
                        30 => 'medium', 
                        40 => 'large'
                    );
     
            foreach ($size_list as $size => $name) {
                if(intval($post_size) == $size){
                    echo "<option value='".$size."' selected='selected'>".$name."</option>";
                }else{
                    echo "<option value='".$size."'>".$name."</option>";
                }
            }
     
            ?>
     
        </select>
      </p>
    </form>
    Donc problème du doublon. Je ne comprend pas sachant que tu as mis dans la condition if un if(intval($post_size) == $size), ce qui est plutôt parlant et qui devrait réglé le problème.

    Merci pour ton aide

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

Discussions similaires

  1. [XL-2010] Récupérer une liste avec valeurs uniques depuis une colonne
    Par Onkas81 dans le forum Excel
    Réponses: 5
    Dernier message: 08/08/2013, 18h46
  2. bouton selection liste entiere avec valeurs exclues
    Par pepitoluna dans le forum QlikView
    Réponses: 3
    Dernier message: 14/06/2013, 09h20
  3. [Javascript] Liste déroulante avec valeurs non cliquables.
    Par SONY30 dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 23/02/2007, 10h36
  4. Paramètre dynamique avec valeur null
    Par nanouille56 dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 21/11/2006, 13h22
  5. Charger une liste dynamiquement avec AJAX
    Par macra dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 20/10/2006, 21h39

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