Problème select html value par défault

Fermé
max1395 Messages postés 89 Date d'inscription dimanche 13 juillet 2008 Statut Membre Dernière intervention 30 juin 2013 - 15 mars 2011 à 10:53
 ipouy - 3 juil. 2013 à 02:34
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 :)
A voir également:

8 réponses

max1395 Messages postés 89 Date d'inscription dimanche 13 juillet 2008 Statut Membre Dernière intervention 30 juin 2013 6
15 mars 2011 à 11:45
Oui pas bête l'astuce mais ca m'affiche toujours le 1er de la liste et non celui de la bdd
1
Utilisateur anonyme
15 mars 2011 à 14:08
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
Utilisateur anonyme
15 mars 2011 à 11:04
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
max1395 Messages postés 89 Date d'inscription dimanche 13 juillet 2008 Statut Membre Dernière intervention 30 juin 2013 6
15 mars 2011 à 11:15
Oui je comprends mais il existerais pas un code plus simple a mettre en place ?
0
Utilisateur anonyme
15 mars 2011 à 11:18
Plus simple ?

Pas à ma connaissance non.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
max1395 Messages postés 89 Date d'inscription dimanche 13 juillet 2008 Statut Membre Dernière intervention 30 juin 2013 6
15 mars 2011 à 11:28
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
Tu pars du même principe mais ta boucle devient un foreach
0
Utilisateur anonyme
15 mars 2011 à 11:34
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
<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
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