UNE LISTE DÉROULANTE AVEC LES DATES.

ffwrude Messages postés 8 Date d'inscription vendredi 18 mars 2005 Statut Membre Dernière intervention 17 octobre 2006 - 4 août 2006 à 17:06
 jugo - 23 juil. 2018 à 14:09
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/38919-une-liste-deroulante-avec-les-dates

Super c'est tout ce que je voulais
neoloop Messages postés 4 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 31 décembre 2006
31 déc. 2006 à 00:03
et voici:
1. <?php
2. echo "<SELECT name='i' Size='1'>";
3.
4. for($i=1; $i<=31;$i++){ //Lister les jours
5.
6. if ($i < 10){ //Lister les jours pour pouvoir leur ajouter un 0 devant
7. echo "<OPTION>0$i
</OPTION>";
8. }
9. else {
10. echo "<OPTION>$i
</OPTION>";
11. }
12. }
13. echo "</SELECT>";
14.
15. echo '<SELECT name="d" Size="1">';
16.
17. for($d=1; $d<=12;$d++){ //Lister les mois
18.
19. if ($d < 10){ //Lister les jours pour pouvoir leur ajouter un 0 devant
20. echo "<OPTION>0$d
</OPTION>";
21. }
22. else {
23. echo "<OPTION>$d
</OPTION>";
24. }
25. }
26. echo "</SELECT>";
27.
28. $date = date('Y'); //On prend l'année en cours
29.
30. echo '<SELECT name="y" Size="1">';
31.
32. for ($y=2000; $y<=$date; $y++) { //De l'année 2000 à l'année actuelle
33. echo "<OPTION>
$y
</OPTION>"; }
34. echo "</SELECT>";
35. ?>
franco_se Messages postés 151 Date d'inscription samedi 1 novembre 2003 Statut Membre Dernière intervention 30 juillet 2018 2
30 déc. 2006 à 15:20
montre le contenu de calendrier.php
neoloop Messages postés 4 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 31 décembre 2006
30 déc. 2006 à 14:15
bonjour.
en faite, j'ai fais un include.
<?php
include('connect-site.php');
include 'calendrier.php';
?>

votre scripte est dans un fichier que j'ai appellé calendrier.php.

le message d'erreur est:
Parse error: parse error in c:\program files\easyphp1-8\www\test php\calendrier.php on line 2

Je ne voie pas ce que j'ai oublié.

merci de votre aide.
franco_se Messages postés 151 Date d'inscription samedi 1 novembre 2003 Statut Membre Dernière intervention 30 juillet 2018 2
30 déc. 2006 à 12:36
affiche ta page, se sera plus simple ;)
neoloop Messages postés 4 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 31 décembre 2006
30 déc. 2006 à 00:52
bonjour.
lorsque je vais un include de la page avec vote code, j'ai comme message d'erreur:
Parse error: parse error in c:\program files\easyphp1-8\www\test php\calendrier.php on line 2

j'ai oublié quoi s'il vous plait?

merci d'avance
ffwrude Messages postés 8 Date d'inscription vendredi 18 mars 2005 Statut Membre Dernière intervention 17 octobre 2006
17 oct. 2006 à 18:34
Hum... je n'ai pas bien compris ton problème... et je ne suis pas sur que tu sois au bon endroit pour poster cela, je pense que sur le forum ca serait mieu.

néamoins je ne pense pas que ton value='pays' soit correct. Parce que si tu veux récuperer la valeur de ton pays. Peut importe que tu mette France ou Nick Karagoua il te resortira pays.

value=$pays te renverra déja ton pays.

Je pense que tu trouveras quelqu'un de largement plus compétent que moi sur un forum.

Rude
cs_salma85 Messages postés 1 Date d'inscription lundi 16 octobre 2006 Statut Membre Dernière intervention 16 octobre 2006
16 oct. 2006 à 15:55
bonjour
vous pouvez m aider svp !!
ben j'ai une table avec deux champs (pays et frais d transport )
j ai rempli l liste deroulante d apres la table (sam)(france ,espagne....)
je veux lorsque je selectionne le pays il m'affiche les frais de ce pays dans une autre fenetre dans un champs
voila l code k j ai mi :
<?php
$server="localhost";
$user="root";
$pass="";
$base="salma";
$con=@mysql_connect($server,$user,$pass);
if($con==false)
{
echo"erreur de connection";
exit();
}
$res=mysql_select_db("salma",$con);
if($res==false)
{
echo"base introuvable";
}
$sql="select distinct pays from frais order by pays";
$res=mysql_query($sql,$con);
if($res==false)
{
echo"erreur interne:requete";
}
echo"<form action='test.php' methode=POST>";
echo"<select name='pays'>\n";

while($ligne=mysql_fetch_array($res))
{
//extract($ligne);
echo "<option background='#000000' value='$list[pays]'>$ligne[pays]</option>";

if($pays<>"")
{
echo"<option value='pays'>$pays\n";
}
}
echo"</select>";
echo"
</form>" ;
?>
Et MERCIII
ffwrude Messages postés 8 Date d'inscription vendredi 18 mars 2005 Statut Membre Dernière intervention 17 octobre 2006
9 août 2006 à 10:08
En fait, trop content que le code marche (sous opéra et FF uniquement d'ailleurs je m'en suis aperçu) j'ai poster tout de suite ^^ Oui je voulais une source à moi ici ^^

Merci pour cette simplification qui oui ! fonctionne. En effet je n'avais pas fermer les balises select, en les fermant, cela fonctionne aussi sous IE. Les lignes echo "temp = .... était en fait des lignes de test que j'avais mis (normalment) en commentaires et que je n'avais pas supprimé.

En effet, j'ai vu plus tard que j'avais afficher la date complete alors que j'aurais pu simplement mettre la date année ^^ Comme ton code est parfait (et bien oui il faut le dire) je ne vais pas corriger ma source en affichant la tienne car...alors ca ne serait plus mon script. Néamoins je promet de le corriger et d'inscrire qu'il faut descendre dans les commentaires pour avoir une version clarifiée et simple de la chose.

Merci encore à tous de m'avoir corrigé.

Rude

PS : (oui les ?> <SELECT> <? était un peu débiles lol j'aurais pu faire un echo "<SELECT> comme je l'avais fait avec options. cela ne marchait pas quand je l'avais fait la premiere fois tout simplement a cause de la : NON fermeture des balises select ^^ voilà
franco_se Messages postés 151 Date d'inscription samedi 1 novembre 2003 Statut Membre Dernière intervention 30 juillet 2018 2
9 août 2006 à 00:38
je vais te donner coup de main pour la clarification du code, en te montrant les problemes qui s'y trouvent, et aussi comment le simplifier.

En fait, il y a des erreurs, ms elles sont gerées par le navigateur. Par ex, tu n'a pas fermé les balises <select> pour le mois et l'année.
De plus, il y a des lignes de code qui peuvent etre jetées a la poubelle.

par exemple, pour generer les <select> du jour et du mois, tu as ecris

# <SELECT><?
# for($i=1; $i<=31;$i++){
#
# if ($i < 10){
# echo "<OPTION>0$i
</OPTION>";
#
# }
# else {
# echo "<OPTION>$i
</OPTION>";
# }
# }
# ?></SELECT><?
#
#
# ?><SELECT><?
# for ($d=1; $d<=12; $d++){
#
# if ($d < 10){
#
# echo "<OPTION>0$d
</OPTION>";}
#
# else {
#
# echo "<OPTION>$d
</OPTION>";}}

Or, il y a encore plus simple pour les if ds les boucles for: c'est une ecriture "lineaire"
Voici la meme portion de code reecrite:

# echo "<select>";
# for($i=1; $i<=31;$i++) echo "<OPTION>".(($i < 10)?"0":"").$i."
</OPTION>";
# echo "</select> <select>";
# for ($d=1; $d<=12; $d++) echo "<OPTION>".(($d < 10)?"0":"").$d."
</OPTION>";
# echo "</select>";

ici, la forme traditionnelle des if, a savoir:
# if(a";
# for ($y=1999; $y<=date(Y); $y++) echo "<option>
".$y."
</option>";
# echo "<select/>";

Ainsi, a partir de ton code d'origine, et en le retravaillant, je n'obtiens que 9 lignes :

# <?php
# echo "<select>";
# for($i=1; $i <= 31; $i++) echo " <option>".(($i < 10)?"0":"").$i."</option>";
# echo "</select><select>";
# for ($d=1; $d <= 12; $d++) echo " <option>".(($d < 10)?"0":"").$d."</option>";
# echo "</select><select>";
# for ($y=1999; $y <= date(Y); $y++) echo " <option>".$y."</option>";
# echo "<*select>";
# ?>


au passage, a quoi servait ces 3 lignes ? :
- # echo "

";
- # echo "temp = $temp
";
- # echo "annee = $annee";

car les
servent a revenir a la ligne. or, il n'y a pas de retour a la ligne ds un menu defilant. ( au passage, en fait, c'est
au format xhtml ... autant ce mettre ds les normes ;) )

de la meme maniere,
# echo "temp = $temp
";
et
# echo "annee = $annee";
serviraient a afficher a l'ecran les valeurs de ces variables $temp et $annee. Mais encapsulé au milieu d'une balise <select></select>, on ne voit rien s'afficher.

enfin, j'espere que ces quelques explications pourront t'aider a progresser, mais c'est un bon debut
ffwrude Messages postés 8 Date d'inscription vendredi 18 mars 2005 Statut Membre Dernière intervention 17 octobre 2006
7 août 2006 à 15:18
Merci pour vos commentaires. J'essairai de modifier plus tard mais par manque de temps ... ca va etre dur. Mon but ici était de foutre une simple liste déroulante pour inclure des années. En effet grace à modulo et compagnie cela pourrait etre encore plus performant.

Lorsque j'aurais clarifié mon code et que n'importe qui sera capable de le lire, j'aurais atteint mon but. Je pense que les listes déroulantes beaucoup plus évoluées sont disponible ici ^^ Je voulais toucher un public bien moin capable (passer moi l'expression). Néamoins, je prend note de toutes vos suggestions qui sont les bienvenues.

Rude
Gwinyam Messages postés 47 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 2 janvier 2008
7 août 2006 à 12:56
bon si t'es débutant, c'est déjà pas mal (faut bien l'encourager, non?)

Par contre, sur ce genre de système, c'est de prévir les années bisextiles et si le mois a 30 jours et non 31 ou 28 pour février

la solution pour le nombre de jours par mois est de passer par un tableau et pour les années bisextiles, il y a une histoire de modulo avec des exceptions.

Courage!
TheSin Messages postés 331 Date d'inscription mardi 12 novembre 2002 Statut Membre Dernière intervention 10 février 2009
6 août 2006 à 09:04
salut
moi j'aimerais encore te conseiller 3 choses pour ceci :

 if ($d < 10){ 
 echo "<OPTION>0$d
</OPTION>";} 
 else { 
 echo "<OPTION>$d
</OPTION>";} 


1) tu peux virer les accolades et tout faire en 2 lignes :
if ($d < 10) echo "<OPTION>0$d
</OPTION>" ;
else echo "<OPTION>$d
</OPTION>" ;

2) Essaie de mieux placer tes accolades pour que ça soit un peu plus lisible (j'ai dû remonter le code pour comprendre que la 2nde accolade de la condition venait de la boucle FOR)

3) Regarde du côté de sprintf pour les nombres formattés, c'est nettement plus pratique, surtout quand t'auras besoin de plus de 1 zéro à ajouter aussi ;-)
http://fr.php.net/manual/fr/function.sprintf.php
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
5 août 2006 à 19:13
Hello,

ce serait bien que tu mettes ton html à des normes un peu plus récentes : balises en minuscule, attribut name (et id) pour ton select, attribut value pour tes options, balises fermées (
).
Côté PHP : ton code va planter sur une config moins relâchée que la tienne : date ('dmY'); avec des apostrophes.
Et autant en faire une fonction, ce sera toujours plus simple à intégrer.
Sannazzarotiti Messages postés 228 Date d'inscription jeudi 1 septembre 2005 Statut Membre Dernière intervention 12 avril 2009
5 août 2006 à 14:01
remplace les <? par <?php et essai de pas ferme les balise php pour ton code (et enleve le <? ?> du debut)
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
4 août 2006 à 19:26
La même chose pour afficher les années de date dans un select dans l'ordre décroissant "au cas ou" :

<select name="annee">
<?php
$date = date('Y');
while ( (int) $date >= 1997 ) {
echo '<option value="'.$date.'">'.$date.'</option>';
$date--;
}
?>
</select>
ffwrude Messages postés 8 Date d'inscription vendredi 18 mars 2005 Statut Membre Dernière intervention 17 octobre 2006
4 août 2006 à 17:06
Je viens de m'apercevoir de la premiere ligne ... <? ?> vous pouvez supprimer ce genre de trucs ^^

Rude
Rejoignez-nous