Page 1 sur 1

Boucle de 7 en 7

Posté : 16 mai 2005, 17:14
par kells
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

Posté : 16 mai 2005, 17:18
par zeus
Et eu lieu d'incrémenter de 1, si tu incrémentais de 7 ?
while ( $samedi <= $lastday )
{
echo $samedi . ' ';
$samedi+= 7;
} 

Posté : 16 mai 2005, 17:56
par kells
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

Posté : 16 mai 2005, 18:01
par zeus
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;
}

Posté : 16 mai 2005, 18:04
par kells
C'a change rien, c'a donne la même chose.

Posté : 16 mai 2005, 18:08
par Epeda
Oui ça donne la même chose, mais c'est plus prudent :)

Posté : 16 mai 2005, 18:25
par Invité
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; } ?>