Problème de liste

Résolu
ben85350 Messages postés 622 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.
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. PhP Messages postés 1774 Statut Membre 606
     
    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. ben85350 Messages postés 622 Statut Membre 27
       
      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 Messages postés 622 Statut Membre 27
       
      Par contre j'ai un peu de mal a comprendre la fonction printf malgré https://www.php.net/printf
      0
      1. PhP Messages postés 1774 Statut Membre 606 > ben85350 Messages postés 622 Statut Membre
         
        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