Problème select html value par défault

Bonjour,

Voila dans un formulaire je voudrais que, dans la case select , l'option par value soit celle qui ya dans la base de donné , je m'explique par le code

        <SELECT name="chiffre" value="<?php echo $data['CHIFFRE'] ; ?>">
		<OPTION value="1">1</OPTION>
		<OPTION value="2">2</OPTION>
		<OPTION value="3">3</OPTION>
		<OPTION value="4">4</OPTION>
	    </SELECT>


Je voudrais que sa affiche ce qu'il y a dans la base de donné or ca affiche tous le temps 1 , comment faire Merci :)

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. Oui pas bête l'astuce mais ca m'affiche toujours le 1er de la liste et non celui de la bdd
    1. pas normal... vous avez quoi dans $data['chiffre'] ?
      ça ne doit plus être un chiffre fatalement, car votre value est une chaîne de caractères, si vous voulez des chiffres comme value il faudrait faire ça à la place :

      $tab = array(1=>'toto',2=>'titi',3=>'tutu');
      foreach($tab as $key=>$value) {
      if ($data['chiffre']==$key) {
      echo '<option value="'.$key.'" selected="true">'.$value.'</option>';
      } else {
      echo '<option value="'.$key.'">'.$value.'</option>';
      }
  2. Bonjour,

    pour sélectionner une valeur dans un select il faut faire ceci dans une des balises option
    <option value="xxx" selected="true">....</option>

    Donc dans votre code PHP ça pourrait être

    <SELECT name="chiffre">
    <?php
    for($i=1; $i<5;$++) {
    if ($data['chiffre']==$i) {
    echo '<option value="'.$i.'" selected="true">'.$i.'</option>';
    } else {
    echo '<option value="'.$i.'">'.$i.'</option>';
    }
    }
    ?>
    </SELECT>
    1. Oui je comprends mais il existerais pas un code plus simple a mettre en place ?
      1. ok c'est bon j'ai compris le code mais comment je fais si je veux veux mettre des noms a la place des chiffres ?
        1. Comme ceci par exemple :

          $tab = array('toto','titi','tutu');
          for($i=1; $i<count($tab);$++) {
          if ($data['chiffre']==$tab[$i]) {
          echo '<option value="'.$tab[$i].'" selected="true">'.$tab[$i].'</option>';
          } else {
          echo '<option value="'.$tab[$i].'">'.$tab[$i].'</option>';
          }
          1. <SELECT NAME="name">
            <?php $tab = array('toto','titi','tutu');
            for($i=0; $i<count($tab);$i++) {
            if ($data['chiffre']==$tab[$i]) {
            echo '<option value="'.$tab[$i].'" selected="true">'.$tab[$i].'</option>';
            } else {
            echo '<option value="'.$tab[$i].'">'.$tab[$i].'</option>';
            }
            }
            ?>
            </SELECT>

            Voici le code précédent modifié de façon à ce qu'il marche
            1. Moi je préfères ça :

              //..dans la boucle bien sûr
              echo '<option value="'.$tab[$i].'" ';
              if ($data['chiffre']==$tab[$i]){ echo 'selected="selected" ';} /*(pas de else) moins de structure conditionnelle exécution plus rapide et plus facile à modifier et plus clair à lire*/
              echo '>'.$tab[$i].</option>';

              // fermer la boucle for