8797 sujets

Développement web côté serveur, CMS

bonjour à tous,
je vient demander de l'aide pour la création d'un calendrier.
voila mon souci j'ai réussi a faire mon calendrier mais j'ai un petit problème
quand j'arrive sur la page d'index ( j'arrive sur le site ) je voit l'année mais pas le mois mais si je clique sur les onglets mois suivant ou mois précédent le mois est bien la.

Voici mon code :

<?php

$liste_mois = Array("","Janvier","F&eacute;vrier","Mars","Avril","Mai","Juin","Juillet","Ao&ucirc;t","Septembre","Octobre","Novembre","D&eacute;cembre");


		function afficherCalendrier($mois = 0 , $annee = 0)

        {
        global $liste_mois;
        if ($mois == 0)
                {
                $mois = date('m');
                }
        if ($annee == 0)
                {
                $annee = date('Y');
                }
       
        if ($mois <= 12 AND $mois >=1)
                {
                if (strlen($annee) == 4)
                        {
                        $jours = Array('Mon','Tue','Wed','Thu','Fri','Sat','Sun');

                        $time_1er = mktime(0,0,0,$mois,1,$annee);
                        $jour_1er = date('D',$time_1er);
                        $nbrJours = date('t',$time_1er);
							
							echo"<div style=\"width:191px; text-align:center; font-family:arial; font-size:12px; padding-top:5px;padding-bottom:5px;\">";
							echo"<a style=\"text-decoration:none; color:black;\" href=\"index.php?mois=".($mois-1)."&amp;annee=$annee\">«</a>";
							echo" ".$liste_mois[$mois]." $annee ";
							echo"<a style=\"text-decoration:none; color:black;\" href=\"index.php?mois=".($mois+1)."&amp;annee=$annee\">»</a>";
							echo"</div>";
							
                   echo '<div id="conteneurcalendar">
								<div id="conteneurjour">
									<div class="float1">Lu</div>
									<div class="float1">Ma</div>
									<div class="float1">Me</div>
									<div class="float1">Je</div>
									<div class="float1">Ve</div>
									<div class="float1">Sa</div>
									<div class="float1">Di</div>
									<div class="clear"></div>
								</div>';

                        $jour_courant = 0;
						echo '<div id="conteneurdate">';
                        while ($jour_courant <= date('t',$time_1er))
                                {
                                for ($i = 0; $i < 7; $i++)     
                                        {
                                        $cle = NULL;
                                        if ($jour_courant < $nbrJours)
                                                {
                                                if ($jour_courant == 0)
                                                        {
                                                        if ($jours[$i] == $jour_1er)
                                                                {
                                                                $jour_courant++;
                                                                $cle = $jour_courant;
                                                                }
                                                        }
                                                else
                                                        {
                                                        $jour_courant++;
                                                        $cle = $jour_courant;
                                                        }
                                                }
                                        else
                                                {
                                                $jour_courant++;
                                                }
   	
   	
   	
   	//	avant tout, vu que je gere avec des css, on determine (pour le jour qu'on est entrain d'afficher)
   	//	la class d'un jour qui n'a ni news, et qui n'est pas le jour d'aujourd'hui
   																		$cssJour="noir";
																		if($i>4)$cssJour="weekend";
   	// on matte si c'est le jour d'aujourd'hui pour lui mettre la class bleu
    																	if($cle==@date('d') && $mois==@date('m') && $annee==@date('Y')){
    																		if($i>4)$cssJour="weekendRouge";
    																		else $cssJour="rouge";
    																	}
    																		   	
   //avant d'afficher le n° du jour (echo '<div>'.$cle.'</div>';) il faut matter dans la bdd, si il y une news a cette date
   //donc soit tu gere les date avec des mktime, donc il faut calculer le timestamp du jour qu'on est entrain d'afficher
   																			$date_news=mktime(0,0,0,$mois,$cle,$annee);
   //sinon, si ont les genre en caractere 
   																			//$date_news=$cle."/".$mois."/".$annee;
   	//ensuite on fait la requete 							
    																		$r_news=mysql_query("SELECT id,titre,description FROM calendar WHERE date='$date_news'");
    																		
    //pis on regarde si le resultat est >0,  et si c'est le cas, on change la css par la class rouge
    																		if(@mysql_numrows($r_news)>0)$cssJour="bleu";
 		
		// et enfin on affiche la cellule du tableau (avec la css qui correspond
echo'<div class="'.$cssJour.' float">';
if(@mysql_numrows($r_news)>0)
echo'<a class="info" href="affnews.php?news_id='.mysql_result($r_news,0,"id").'">';
                                        echo"$cle";
										if(@mysql_numrows($r_news)>0)
										echo"<span><b>Titre</b> : <br /><i>".mysql_result($r_news,0,"titre")."</i><br /><br /> <b>Message :</b><br /><i>".mysql_result($r_news,0,"description")."</i></span>";
                                        if(@mysql_numrows($r_news)>0)echo"</a>";
                                        echo"</div>";
         
                                        }
  	//voila dans ce cas, le jour actuel est en bleu sauf s'il a une news il devient rouge comme les autres 
                                //echo'</div>';
								echo"<div class='clear'></div>";
                                }
                        echo '</div>';
						echo '</div>';
                        }
                else
                        {
                        echo 'Année sur 4 chiffres';
                        }
                }
        else
                {
                echo 'Mois ERRONNE';
                }
        }
        
        
        
		if(!empty($_GET['annee'])){
			$mois=$_GET['mois'];
			$annee=$_GET['annee'];
			if($mois==13){
				$mois=1;
				$annee++;
			}
			if($mois==0){
				$mois=12;
				$annee--;
			}
		}else{
			$mois = date("m");
			$annee = date("Y");
		}
		afficherCalendrier($mois,$annee);
		
	?>
	


Voila ce que m'indique PHP :

Notice: Undefined index: 05 in c:\program files\easyphp1-8\www\buz\look.php on line 31

Un peu d'aide serait la bienvenue !!
Modifié par Viva (01 May 2008 - 17:11)
Salut Viva,

il faut remplacer les 2
$mois = date('m');
par
$mois = date('n');

car comme le précise la doc date('m') va te renvoyer 05 alors que c'est l'index 5 qui existe Smiley cligne !

A+
putain je suis vraiment C.. merci beaucoup de ton aide nickel maintenant encore merci a toi de ta rapidité !!