Inverser l'ordre de l'année dans liste déroulante

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Inverser l'ordre de l'année dans liste déroulante

par Cyrano » 20 août 2006, 09:24

Ce code ne peut effectivement que planter : la structure d'une boucle for() doit répondre à des critères précis, il y a trois paramètres spécifiques :
  1. Le point de départ : on assigne une valeur à un pointeur;
  2. Le point d'arrivée : On compare la valeur du pointeur à la valeur cible;
  3. l'instruction à exécuter sur le pointeur à chaque tour de boucle si le point 2 est vrai (sinon, on sort de la boucle.)
Le second point est important : on compare, on assigne pas. Donc on doit utiliser un opérateur de comparaison et non un opérateur d'assignation.

Donc reprenons le for() :
  1. Le point de départ : le pointeur est égal à l'année en cours;
  2. Le point d'arrivée : tant que le pointeur est (ici) supérieur ou égal à la valeur cible;
  3. l'instruction à exécuter : on décrémente le pointeur.
Je te laisse corriger toi-même à partir de là :)

par thehawk » 19 août 2006, 12:42

je sens que je vé me taper dessus moi si ca continu ....

par Invité » 18 août 2006, 14:35

Non ne t'inquiètes pas zeus :) J'avais fait exactement ce code avant de venir demander de l'aide. C'est lui même qui bug...étant donné que c'était =1945

par zeus » 18 août 2006, 14:10

Par contre, je trouve dommage que thehawk t'ai donné le code tout fait :?

Parce que côté apprentissage, c'est moyen

par bobi » 18 août 2006, 13:36

C'est nickel chrome :) Merci beaucoup !

Résolu !

par iclo » 17 août 2006, 20:36

Le deuxième paramêtre d'un for est une condition, tant qu'elle est vrai on continue à boucler, là tu as une affectation, qui est toujours considérée comme '"vraie"
Tu dois boucler tant que i est plus grand ou égale à 1945.
Avec ça, tu devrais pouvoir corriger ton code

par bobi » 17 août 2006, 19:35

Bé heu c'est à peu près le code de thehawk que j'avais fait avant de demander de l'aide.
<select name="annees">  
<?php for($i=date("Y");$i=1945;$i--)  
echo '<option value="'.$i.'">'.$i.'</option>';  
?>  
</select>
Je pars de 2006, jusqu'à 1945 en décrémentant.

Et ce code boucle à l'infini j'ai l'impression, ce que j'arrive à voir avant que mon IE ne plante c'est des 1945 à l'infini dans la liste déroulante.

Je ne comprend pas...

par iclo » 17 août 2006, 18:23

Montre nous le code qui plante.

En résumé : on part de 2006, on boucle tant qu'on est au-dessus de 1945, et on décrémente d'une unité à chaque fois. Voilà, il n'y a plus qu'à traduire en php :wink:

par Invité » 17 août 2006, 16:28

Eh bien c'est ce que j'ai fait avant de poser ma question lol

Ca devrait marcher en toute logique mais non...j'ai l'impression que ça tourne en boucle et puis plantage...

par thehawk » 17 août 2006, 16:11

concretement le code donnerait quelque choz comme :
<select name="annees"> 
<?php for($i<=date("Y");$i=1945;$i--) 
echo '<option value="'.$i.'">'.$i.'</option>'; 
?> 
</select

par zeus » 17 août 2006, 14:20

Actuellement, tu vas de 1945 à 2006 en augmentant de 1 à chaque boucle. Si tu essayais de partir de 2006 pour aller à 1945 en diminuant de 1 à chaque boucle ;)

Inverser l'ordre de l'année dans liste déroulante

par bobi » 17 août 2006, 13:59

Bonjour,

Ce code :
<select name="annees">
<?php for($i=1945;$i<=date("Y");$i++)
echo '<option value="'.$i.'">'.$i.'</option>';
?>
</select>
me permet d'afficher les années de 1945 à 2006.

Je voudrais afficher 2006 en premier et 1945 à la fin de la liste. Comment changer la boucle pour avoir cette affichage ?

Merci !