ffwrude
Messages postés8Date d'inscriptionvendredi 18 mars 2005StatutMembreDernière intervention17 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.
neoloop
Messages postés4Date d'inscriptionlundi 20 novembre 2006StatutMembreDernière intervention31 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és151Date d'inscriptionsamedi 1 novembre 2003StatutMembreDernière intervention30 juillet 20182 30 déc. 2006 à 15:20
montre le contenu de calendrier.php
neoloop
Messages postés4Date d'inscriptionlundi 20 novembre 2006StatutMembreDernière intervention31 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és151Date d'inscriptionsamedi 1 novembre 2003StatutMembreDernière intervention30 juillet 20182 30 déc. 2006 à 12:36
affiche ta page, se sera plus simple ;)
neoloop
Messages postés4Date d'inscriptionlundi 20 novembre 2006StatutMembreDernière intervention31 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és8Date d'inscriptionvendredi 18 mars 2005StatutMembreDernière intervention17 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és1Date d'inscriptionlundi 16 octobre 2006StatutMembreDernière intervention16 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";
ffwrude
Messages postés8Date d'inscriptionvendredi 18 mars 2005StatutMembreDernière intervention17 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és151Date d'inscriptionsamedi 1 novembre 2003StatutMembreDernière intervention30 juillet 20182 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
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és8Date d'inscriptionvendredi 18 mars 2005StatutMembreDernière intervention17 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és47Date d'inscriptionvendredi 7 octobre 2005StatutMembreDerniè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és331Date d'inscriptionmardi 12 novembre 2002StatutMembreDernière intervention10 février 2009 6 août 2006 à 09:04
salut
moi j'aimerais encore te conseiller 3 choses pour ceci :
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és10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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és228Date d'inscriptionjeudi 1 septembre 2005StatutMembreDernière intervention12 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és2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 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" :
23 juil. 2018 à 14:09
31 déc. 2006 à 00:03
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. ?>
30 déc. 2006 à 15:20
30 déc. 2006 à 14:15
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.
30 déc. 2006 à 12:36
30 déc. 2006 à 00:52
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
17 oct. 2006 à 18:34
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
16 oct. 2006 à 15:55
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
9 août 2006 à 10:08
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à
9 août 2006 à 00:38
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
7 août 2006 à 15:18
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
7 août 2006 à 12:56
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!
6 août 2006 à 09:04
moi j'aimerais encore te conseiller 3 choses pour ceci :
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
5 août 2006 à 19:13
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.
5 août 2006 à 14:01
4 août 2006 à 19:26
<select name="annee">
<?php
$date = date('Y');
while ( (int) $date >= 1997 ) {
echo '<option value="'.$date.'">'.$date.'</option>';
$date--;
}
?>
</select>
4 août 2006 à 17:06
Rude