Boucle de 7 en 7

kells
Invité n'ayant pas de compte PHPfrance

16 mai 2005, 17:14

Bonjour, j'aimerais faire une boucle qui aille de 7 en 7, pour afficher chaque samedi, mais je n'arrive qu'à faire +1 jours, il doit surrement y avoir une solution, je ne la trouve pas?

Code : Tout sélectionner

<? $jour=strftime("%u"); $delta=6-$jour; if ($delta<0) $delta+=7; $samedi= strftime("%Y%m%d",time()+$delta*24*3600); $month = substr($samedi, 4 ,2); $year = substr($samedi, 0 ,4); $lastday = date("d M Y", mktime(0, 0, 0, $month, substr($samedi, 6, 2)+720, $year)); while ( $samedi <= $lastday ) { echo $samedi . ' '; $samedi++; } ?>
Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 mai 2005, 17:18

Et eu lieu d'incrémenter de 1, si tu incrémentais de 7 ?
while ( $samedi <= $lastday )
{
echo $samedi . ' ';
$samedi+= 7;
} 
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

kells
Invité n'ayant pas de compte PHPfrance

16 mai 2005, 17:56

Voila j'ai fait ce que tu m'as dis mais la, je bloque, pensé que tout était OK mais c'a s'arrete au mois de juillet et c'a reprend :

Code : Tout sélectionner

<? $jour=strftime("%u"); $delta=6-$jour; if ($delta<0) $delta+=7; $samedi= strftime("%Y%m%d",time()+$delta*24*3600); $month = substr($samedi, 4 ,2); $year = substr($samedi, 0 ,4); $lastday = date("Ymd", mktime(0, 0, 0, $month, substr($samedi, 6, 2)+720, $year)); while ( $samedi <= $lastday ) { $samedi+= 7; $list = date("d M Y", mktime(0, 0, 0, $month, substr($samedi, 6, 2)+'.$samedi.', $year)); echo "$list<br>"; } ?>
et voila le résultat :

28 May 2005
04 Jun 2005
11 Jun 2005
18 Jun 2005
25 Jun 2005
02 Jul 2005
09 Jul 2005
16 Jul 2005
23 Jul 2005
30 Jul 2005
06 Aug 2005
05 May 2005
12 May 2005
19 May 2005
26 May 2005
02 Jun 2005
09 Jun 2005
16 Jun 2005
23 Jun 2005
30 Jun 2005
07 Jul 2005
14 Jul 2005
21 Jul 2005
28 Jul 2005
04 Aug 2005
03 May 2005

Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 mai 2005, 18:01

Je te conseille d'incrémenter $samedi APRES ton traitement, sinon tu risque de dépasser ton test avant le traitement
while ( $samedi <= $lastday ) 
{
$list = date("d M Y", mktime(0, 0, 0, $month, substr($samedi, 6, 2)+'.$samedi.', $year));
echo "$list<br>";
$samedi+= 7;
}
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

kells
Invité n'ayant pas de compte PHPfrance

16 mai 2005, 18:04

C'a change rien, c'a donne la même chose.

Eléphant du PHP | 102 Messages

16 mai 2005, 18:08

Oui ça donne la même chose, mais c'est plus prudent :)

Invité
Invité n'ayant pas de compte PHPfrance

16 mai 2005, 18:25

Résolu, merci beaucoup.

Code : Tout sélectionner

<? $jour=strftime("%u"); $delta=6-$jour; if ($delta<0) $delta+=7; $samedi= strftime("%Y%m%d",time()+$delta*24*3600); $month = substr($samedi, 4 ,2); $year = substr($samedi, 0 ,4); $lastday = date("Ymd", mktime(0, 0, 0, $month, substr($samedi, 6, 2)+720, $year)); $last = 720; $sam = 0; while ( $sam <= $last ) { $list = date("d M Y", mktime(0, 0, 0, $month, substr($samedi, 6, 2)+$sam, $year)); echo "$list<br>"; $sam+= 7; } ?>