Problème select html value par défault

max1395 Messages postés 95 Statut Membre -  
 ipouy -
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

  1. max1395 Messages postés 95 Statut Membre 6
     
    Oui pas bête l'astuce mais ca m'affiche toujours le 1er de la liste et non celui de la bdd
    1
    1. Utilisateur anonyme
       
      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>';
      }
      0
  2. Utilisateur anonyme
     
    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>
    0
  3. max1395 Messages postés 95 Statut Membre 6
     
    Oui je comprends mais il existerais pas un code plus simple a mettre en place ?
    0
  4. Utilisateur anonyme
     
    Plus simple ?

    Pas à ma connaissance non.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. max1395 Messages postés 95 Statut Membre 6
     
    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 ?
    0
  7. blaskunk
     
    Tu pars du même principe mais ta boucle devient un foreach
    0
  8. Utilisateur anonyme
     
    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>';
    }
    0
  9. 117
     
    <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
    0
    1. ipouy
       
      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
      0