8800 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Voila il y a deux ans j'avais fait un calendrier évènementiel ou je pouvait ajouter un événement par jour. ( survole sur la date et l'événement apparait )

J'ai repris cette source et je vous explique ce que je voudrais en faire.
J'ai une team counter-strike et je voudrais mettre au point un system avec un gros calendrier sur lequel les membres de la team diront si il sont disponible ou non ect ...
Jusque la pas de souci les entrés dans la BDD ect marche nickel j'ai juste un souci d'affichage pour afficher l'évènement au survol je gère en css avec un SPAN je voudrais qu'il me récupérais le nom de tous les membres qui ont déjà entré si il était dispo ou non pour cette date mais le problème c'est que mon while ne marche pas je ne comprend vraiment pas !

Voila mon code :


	function afficherCalendrier($mois = 0 , $annee = 0){
        global $liste_mois;
        if ($mois == 0){
        	$mois = date('n');
        }
        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 id="affichagemoicalendar">';
						echo''.@$liste_mois[$mois].' '.$annee.'';
					echo'</div>';
					echo'<div id="conteneurcalendar">';
						echo'<div id="conteneurjour">';
							echo'<div class="float1">Lu</div>';
							echo'<div class="float1">Ma</div>';
							echo'<div class="float1">Me</div>';
							echo'<div class="float1">Je</div>';
							echo'<div class="float1">Ve</div>';
							echo'<div class="float1">Sa</div>';
							echo'<div class="float1">Di</div>';
							echo'<div class="clear"></div>';
						echo'</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, je 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('n') && $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);
										$id_date=date('jnY',$date_news);
									    // sinon, si ont les genre en caractere 
									    // $date_news=$cle."/".$mois."/".$annee;
   									    // ensuite on fait la requete 		
										echo'<div class="'.$cssJour.' float2">';
											$sql="SELECT id,id_date,joueur,date,dispo,heure,message FROM calendar WHERE id_date='$id_date'";
											$result=mysql_query($sql);
											$nb_date=mysql_num_rows($result);
											if($nb_date > 0){
												$cssJour="bleu";
												echo'<a class="info" href="affnews.php?news_id='.mysql_result($result,0,"id").'">';
													echo $cle;
													echo'<span>';
													while($ligne=mysql_fetch_array($result)){
														echo''.$ligne['joueur'].'<br />';
													}
													echo'</span>';
												echo'</a>';
											}else{
												echo $cle;
											}
										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 style="padding-top:5px;">';
							echo '<div id="moisprecedent"><a href="calendar.php?mois='.($mois-1).'&amp;annee='.$annee.'">« '.$liste_mois[$mois-1].'</a></div>';
							echo '<div id="moisuivant"><a href="calendar.php?mois='.($mois+1).'&amp;annee='.$annee.'">'.$liste_mois[$mois+1].' »</a></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("n");
			$annee = date("Y");
		}

		afficherCalendrier($mois,$annee);
		
	?>


J'ai deux entré dans ma table pour le même jouer et une pour un autre jour le souci est que pour le jour 8 il ne m'affiche que un nom de joueur et pour l'autre jour rien il me mais bien la balise <a> mais pas le span !

Je Vous remercie d'avance !
Modifié par Viva (09 Sep 2009 - 12:38)
oui il y a un probleme dans la boucle.

je ne te l'expliquerai pas dans le detail

mais je m'en suis douté en lisant dans la doc php.net ceci

"Note: Les appels mysql_result() ne devraient pas être mélangés avec d'autres fonctions qui travaillent aussi sur le résultat. "

perso je n'utilise jamais cette fonction.

si tu deplaces cette ligne

while($ligne=mysql_fetch_array($result)){

et le } correspondant de façon a inclure toute l'ecriture du lien et du span ça va marcher.