Problème de liste
Résolu
ben85350
Messages postés
610
Date d'inscription
Statut
Membre
Dernière intervention
-
PhP Messages postés 1770 Date d'inscription Statut Membre Dernière intervention -
PhP Messages postés 1770 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai fait une liste à l'aide d'un tableau en php. Quand un internaute ouvre la page, il y a une valeur par défaut qui est différente (dans notre cas je l'ai mis fixe a 20). Mon problème c'est que je vois dans ma liste que la valeur par défaut. Par contre, si je clique sur envoyer, la bonne valeur est prise en compte.
Je vous fournis une partie du code afin de trouver mon erreur.
Merci de votre aide !
J'ai fait une liste à l'aide d'un tableau en php. Quand un internaute ouvre la page, il y a une valeur par défaut qui est différente (dans notre cas je l'ai mis fixe a 20). Mon problème c'est que je vois dans ma liste que la valeur par défaut. Par contre, si je clique sur envoyer, la bonne valeur est prise en compte.
Je vous fournis une partie du code afin de trouver mon erreur.
form action="page2.php" method="POST"> <?php $liste=Array("0","10","20","30","40","50","60","70","80","90","100"); $defaut = 20; echo '<select name="pourc">'; for($i=0;$i<sizeof($liste);$i++) { echo '<option value='.$liste[$i]; if ($liste[$i] = $defaut) { echo ' selected'; } echo '>'; echo $liste[$i].' %'; echo'</option>'; } ?> </select>
Merci de votre aide !
A voir également:
- Problème de liste
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Liste de diffusion whatsapp - Guide
- Site dangereux liste - Guide
1 réponse
Bonjour
Ha l'éternelle erreur entre "=" (opérateur binaire) et "==" (opérateur de comparaison)
Donc si tu remplaces
par (note les 2 signes "égal")
ca fonctionne déjà mieux
Autrement une autre version en utilisant printf que je trouve plus propre
Ha l'éternelle erreur entre "=" (opérateur binaire) et "==" (opérateur de comparaison)
Donc si tu remplaces
if ($liste[$i] = $defaut)
par (note les 2 signes "égal")
if ($liste[$i] == $defaut)
ca fonctionne déjà mieux
Autrement une autre version en utilisant printf que je trouve plus propre
<?php $liste=Array("0","10","20","30","40","50","60","70","80","90","100"); $defaut = 20; echo '<select name="pourc">'."\n"; for($i=0;$i<count($liste);$i++) { printf("\t<option value=\"%s\" %s>%s</option>\n", $liste[$i], ($liste[$i] == $defaut) ? 'selected="selected"' : "", $liste[$i]." %"); } ?> </select>
Je vais essayer sinon ta méthode plus clean
Merci pour ton aide PhP
printf va remplacer les séquences qui commence par % ici suivi d'un petit "s" minuscule pour indiquer que je passe une chaîne de caractères.
En quelque sorte on cherche à faire un truc comme ceci :
On fait je veux écrire <option value="xxx" [selected="selected"]>yyy</option>
xxx est variable
selected="selected" est optionnel c'est pourquoi j'ai mis des crochets
yyy est variable
En utilisant le syntaxe attendue par printf
<option value="xxx" [selected="selected"]>yyy</option>
devient
<option value="%s" %s>%s</option>
je dois donc fournir 3 paramètres à la fonction printf
et ces paramètres sont respectivement
$liste[$i]
($liste[$i] == $defaut) ? 'selected="selected"' : "" qui retourne selected="selected" ou ""
$liste[$i]." %"