Strtotime probleme avec fevrier

Fermé
kyuubi6 - 30 mars 2011 à 13:14
 Monsieur le chat - 9 août 2011 à 15:14
Bonjour tout le monde,

J'ai du faire un site pour mon patron qui fonctionnait nickel et il vient de me "peter" entre les mains. Je dois afficher le mois actuel et les 5 mois précédent donc actuellement on est en mars il doit m'afficher "octobre,novembre,decembre,janvier,fevrier,mars". Pour cela j'utilise strtotime(je vais vous mettre mon code ce sera plus facile)
for($i = 5; $i > 0; $i--)
	{
		//je récupère le mois
		//echo date('m') ;
		$mois = date('m',strtotime("-".$i."month")) ;
		//echo $mois ;
		//je récupère l'annéé
		$annee = date('Y',strtotime("-".$i."month")) ;
		
		//echo $mois."</br>".$annee."</br>" ;
		//je regarde le numéro du mois et je fais correspondre l'image
		if($mois == 1)
		{
			echo "<a href=categorie.php?mois=janvier&annee=".$annee."><img src=mois/janvier.jpg /></a>" ;
		}
		else if($mois == 2)
		{
			echo "<a href=categorie.php?mois=fevrier&annee=".$annee."><img src=mois/fevrier.jpg /></a>" ;
		}
		else if($mois == 3)
		{
			echo "<a href=categorie.php?mois=mars&annee=".$annee."><img src=mois/mars.jpg /></a>" ;
		}
		else if($mois == 4)
		{
			echo "<a href=categorie.php?mois=avril&annee=".$annee."><img src=mois/avril.jpg /></a>" ;
		}
		else if($mois == 5)
		{
			echo "<a href=categorie.php?mois=mai&annee=".$annee."><img src=mois/mai.jpg /></a>" ;
		}
		else if($mois == 6)
		{
			echo "<a href=categorie.php?mois=juin&annee=".$annee."><img src=mois/juin.jpg /></a>" ;
		}
		else if($mois == 7)
		{
			echo "<a href=categorie.php?mois=juillet&annee=".$annee."><img src=mois/juillet.jpg /></a>" ;
		}
		else if($mois == 8)
		{
			echo "<a href=categorie.php?mois=aout&annee=".$annee."><img src=mois/aout.jpg /></a>" ;
		}
		else if($mois == 9)
		{
			echo "<a href=categorie.php?mois=septembre&annee=".$annee."><img src=mois/septembre.jpg /></a>" ;
		}
		else if($mois == 10)
		{
			echo "<a href=categorie.php?mois=octobre&annee=".$annee."><img src=mois/octobre.jpg /></a>" ;
		}
		else if($mois == 11)
		{
			echo "<a href=categorie.php?mois=novembre&annee=".$annee."><img src=mois/novembre.jpg /></a>" ;
		}
		else if($mois == 12)
		{
			echo "<a href=categorie.php?mois=decembre&annee=".$annee."><img src=mois/decembre.jpg /></a>" ;
		}

		$compteur++ ;
		if($compteur == 3)
		{
			echo "</br>" ;
			$compteur = 0 ;
		}
	}

	$mois2 = date("m") ;
	$annee2 = date("Y") ;
	//echo $mois."</br>".$annee."</br>" ;
		if($mois2 == 1)
		{
			echo "<a href=categorie.php?mois=janvier&annee=".$annee2."><img src=mois/janvier.jpg /></a>" ;
		}
		else if($mois2 == 2)
		{
			echo "<a href=categorie.php?mois=fevrier&annee=".$annee2."><img src=mois/fevrier.jpg /></a>" ;
		}
		else if($mois2 == 3)
		{
			echo "<a href=categorie.php?mois=mars&annee=".$annee2."><img src=mois/mars.jpg /></a>" ;
		}
		else if($mois2 == 4)
		{
			echo "<a href=categorie.php?mois=avril&annee=".$annee2."><img src=mois/avril.jpg /></a>" ;
		}
		else if($mois2 == 5)
		{
			echo "<a href=categorie.php?mois=mai&annee=".$annee2."><img src=mois/mai.jpg /></a>" ;
		}
		else if($mois2 == 6)
		{
			echo "<a href=categorie.php?mois=juin&annee=".$annee2."><img src=mois/juin.jpg /></a>" ;
		}
		else if($mois2 == 7)
		{
			echo "<a href=categorie.php?mois=juillet&annee=".$annee2."><img src=mois/juillet.jpg /></a>" ;
		}
		else if($mois2 == 8)
		{
			echo "<a href=categorie.php?mois=aout&annee=".$annee2."><img src=mois/aout.jpg /></a>" ;
		}
		else if($mois2 == 9)
		{
			echo "<a href=categorie.php?mois=septembre&annee=".$annee2."><img src=mois/septembre.jpg /></a>" ;
		}
		else if($mois2 == 10)
		{
			echo "<a href=categorie.php?mois=octobre&annee=".$annee2."><img src=mois/octobre.jpg /></a>" ;
		}
		else if($mois2 == 11)
		{
			echo "<a href=categorie.php?mois=novembre&annee=".$annee2."><img src=mois/novembre.jpg /></a>" ;
		}
		else if($mois2 == 12)
		{
			echo "<a href=categorie.php?mois=decembre&annee=".$annee2."><img src=mois/decembre.jpg /></a>" ;
		}


Ca fonctionne très bien mais arrivé au 29 mars, à mon avis il fait 29 - 1 mois donc 29 février, ca existe pas alors il m'affiche deux fois le mois de mars et c'est la galère :'(.
Pouvez vous m'aider
merci beaucoup
A voir également:

2 réponses

Bonjour

Ramène-toi à une date de référence qui ne dépasse jamais le 28 du mois. Par exemple, enlève 5 jours si on est au-delà du 25.
Comme ça, quand tu fais -1mois, il n'y a pas d'ambiguïté.

Au passage, évite de réécrire 24 fois la (presque) même ligne, c'est lourd... Utilise un tableau pour les noms des mois.

<?php
$compteur=0;
$dateref=time(); 
$tbmois=array('janvier','fevrier','mars','avril','mai','juin','juillet','aout','septembre','octobre','novembre','decembre');
// si on est après le 10 du mois, on recule $dateref de 5 jours 
if (date ("d",$dateref)>25) $dateref -= 5*3600*24;

for($i = 5; $i > 0; $i--)
	{
		//je récupère le mois
		//echo date('m') ;
		$mois = date('m',strtotime("-".$i."month",$dateref)) ;
		//echo $mois ;
		//je récupère l'annéé
		$annee = date('Y',strtotime("-".$i."month",$dateref)) ;
		
		//echo $mois."</br>".$annee."</br>" ;
		//je regarde le numéro du mois et je fais correspondre l'image

		echo "<a href=categorie.php?mois=${tbmois[$mois-1]}&annee=".$annee."><img src=mois/${tbmois[$mois-1]}.jpg /></a>" ;

		$compteur++ ;
		if($compteur == 3)
		{
			echo "</br>" ;
			$compteur = 0 ;
		}
	}

	$mois2 = date("m",$dateref) ;
	$annee2 = date("Y",$dateref) ;
	//echo $mois."</br>".$annee."</br>" ;

		echo "<a href=categorie.php?mois=${tbmois[$mois2-1]}&annee=".$annee2."><img src=mois/${tbmois[$mois2-1]}.jpg /></a>" ;

?>
0
merci mais j'ai trouvé comment régler le problème.
bonne journée
0
Monsieur le chat
9 août 2011 à 15:14
Comment?!?!?
0