Problème de liste
Résolu
ben85350
Messages postés
622
Statut
Membre
-
PhP Messages postés 1774 Statut Membre -
PhP Messages postés 1774 Statut Membre -
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 code ascii - Guide
- Liste déroulante en cascade - 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("\t<option value=\"%s\" %s>%s</option>\n", $liste[$i], ($liste[$i] == $defaut) ? 'selected="selected"' : "", $liste[$i]." %");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 :
printf("\t<option value=\"%param1\" %param2>%param3</option>\n", $param1, $param2, $param3);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]." %"