Page 1 sur 1

Amlioration du code : Choix d'une année à aujourd'hui

Posté : 26 janv. 2006, 13:31
par Sebe
Salut,

Je cherche à améliorer mon scrip d'un choix pour un formulaire. Cela ne servira vraiment qu'à moi mais comme je suis en phase d'apprentissage ... cela pourra servir plus tard!

Donc voici mon code
<td height="35">&nbsp;</td>
    <td valign="top"><form id="form1" name="form1" method="POST" action="<?php echo $editFormAction; ?>">
      <table width="100%" border="1">
        <tr>
          <td>Ann&eacute;e</td>
		  <td><label>
            <select name="annee" id="annee">
            <option value="1983">1983</option>
            <option value="1984">1984</option>
            <option value="1985">1985</option>
            <option value="1986">1986</option>
            <option value="1987">1987</option>
            <option value="1988">1988</option>
            <option value="1989">1989</option>
            <option value="1990">1990</option>
            <option value="1991">1991</option>
            <option value="1992">1992</option>
            <option value="1993">1993</option>
            <option value="1994">1994</option>
            <option value="1995">1995</option>
            <option value="1996">1996</option>
            <option value="1997">1997</option>
            <option value="1998">1998</option>
            <option value="1999">1999</option>
            <option value="2000">2000</option>
            <option value="2001">2001</option>
            <option value="2002">2002</option>
            <option value="2003">2003</option>
            <option value="2004">2004</option>
            <option value="2005">2005</option>
            <option value="2006">2006</option>
            <option value="2007">2007</option>
            <option value="2008">2008</option>
            <option value="2009">2009</option>
            <option value="2010">2010</option>
            </select>
            <input name="participant" type="hidden" id="participant" value="<?php echo $row_participant['ID_coureur']; ?>" />
Comme vous l'imaginez, ce sont bien des années ... je me demande si dans mon choix il n'y a pas moyen de mettre de 1983 à aujourd'hui!

Merci

Posté : 26 janv. 2006, 14:03
par i974
Salut :)

je debute egalement, mais moi j'aurais fais comme ca:

tu recuperes l'année en cours.
avec
$annee_en_cours = date("Y");
$annee_depart = "1983";

$difference = $annee_en_cours - $annee_depart;
et ensuite tu generes tes lignes, avec un compteur pour qu'il sarrete lorsque
la difference d'année est atteinte...
Il y a peut-etre plus simple... mais j'aurais fais comme ca ^^
si ca peut t'aider ;)

Posté : 26 janv. 2006, 14:12
par Sebe
Salut,

Y'a déjà une idée maintenant, je vais essayé de l'inclure dans mon script!

Merci

Posté : 26 janv. 2006, 19:59
par didgar
Salut !

Tu peux faire comme ça :
<select name="annee" id="annee">
<?php

$annee_en_cours = date("Y");
$min_year = $annee_en_cours - 23; // ou 23 définit la borne inferieure

for($a=$min_year;$a<=$annee_en_cours;$a++)
{
	echo "<option value=\"$a\">$a</option>\r";
}
?>
</select>
Ce code est valable tout le temps car il est réajusté automatiquement à chaque nouvelle année -> dans dix ans en 2016, ton script affichera de 1993 à 2016.

A+

Didier

Posté : 26 janv. 2006, 23:47
par Sebe
Salut didgar,

J'ai une question à te poser par rapport à la 'borne inférieure'. Tu lui as donné comme valeur 23 mais l'an prochain? Elle devra être égale à 24, non? Si ce n'est pas le cas, je ne vois pas comment ton scrip fonctionne ... j'ai commencé le PHP début novembre!

Merci

Posté : 27 janv. 2006, 00:07
par didgar
Salut didgar,

J'ai une question à te poser par rapport à la 'borne inférieure'. Tu lui as donné comme valeur 23 mais l'an prochain? Elle devra être égale à 24, non? Si ce n'est pas le cas, je ne vois pas comment ton scrip fonctionne ... j'ai commencé le PHP début novembre!

Merci
Salut !

Ta question n'as de sens que si tu souhaites que ta borne inférieure soit définitivement 1983 !

Auquel cas le script deviens :
<select name="annee" id="annee">
<?php

$annee_en_cours = date("Y");
$min_year = 1983; //  définit la borne inferieure

for($a=$min_year;$a<=$annee_en_cours;$a++)
{
    echo "<option value="$a">$a</option>\r";
}
?>
</select>
Dans ce cas, on peut faire plus simple avec une boucle while mais la n'est pas la question. Donc avec le code ci-dessus tu fixes la borne inférieure à 1983 et tous les ans $annee_en_cours va s'incrémenter de 1 donc en ce moment tu as dans ton select de 1983 à 2006 inclus. Avec ce script dans 10 ans tu auras de 1983 à 2016.

Dans le script que je t'ai envoyé dans mon précédent post la borne inférieure n'est pas figée. Ce qui est figé c'est l'écart [ 23 ans ] entre la borne inf et l'année en cours. Dans 10 ans tu auras automatiquement de 1993 à 2016 ce qui fait toujours 23 ans d'écart.
Pourquoi ? Parce que $min_year = $annee_en_cours - 23;

Est-ce que ça répond à ta question ? N'hésites pas si tu as besoin ;-)

A+

Didier

Posté : 27 janv. 2006, 00:21
par Sebe
Ta question n'as de sens que si tu souhaites que ta borne inférieure soit définitivement 1983 !
C'est bien cela! La 1er année est 1983 et jusqu'à aujourd'hui. 1983 est définitif!
Dans ce cas, on peut faire plus simple avec une boucle while mais la n'est pas la question. Donc avec le code ci-dessus tu fixes la borne inférieure à 1983 et tous les ans $annee_en_cours va s'incrémenter de 1 donc en ce moment tu as dans ton select de 1983 à 2006 inclus. Avec ce script dans 10 ans tu auras de 1983 à 2016.
Un bon code c'est ce que je désire. Comme je le disais, je cherche une amélioration et surtout la comprendre pour que je puisse le faire par moi-même ensuite ... c'est pourquoi, je me demandais comment ta précédente proposition fonctionnait.
Est-ce que ça répond à ta question ? N'hésites pas si tu as besoin ;-)
Vais pouvoir faire quelque chose de propre ... merci!

Posté : 27 janv. 2006, 00:28
par didgar
Vais pouvoir faire quelque chose de propre ... merci!
Y'a pas d'koi ;-)

A+

Didier

Posté : 27 janv. 2006, 23:25
par Sebe
Salut,

C'est avec un peu de retard que j'annonce que ce code fonctionne à merveille!

Merci pour cette amélioration de mon code