Problème de liste

Résolu
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.
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 !
--
Quand j'étais petit à la maison, le plus dur c'était la fin du mois... Surtout les trente derniers jours !  --Coluche--
Configuration: Firefox 3.0

1 réponse

  1. Bonjour

    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>


    0
    1. A chaque fois je tombe dans le pano !!

      Je vais essayer sinon ta méthode plus clean
      Merci pour ton aide PhP
      0
    2. @ben85350
      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]." %"
      0