<? class Mois { //le mois de 1 à12 private $mois; //le nom du mois private $nomMois; //la liste des noms des jours de la semaine private $nomJours; // le constructeur function __construct($mois) { if ( $mois < 1 || $mois > 12 ) { $this->mois = date("m"); // le mois courant } $this->mois = $mois; //récupération du nom du mois setlocale (LC_TIME, "fr_FR", "FRA"); $this->nomMois = strftime("%B", mktime(0, 0, 0, $this->mois)); //récupération du nom du jour for ($i=0;$i<7;$i++) { $this->nomJours[] = strftime("%A", mktime(0, 0, 0, 1, 19+$i, 2004)); //le 19/01/2005 = lundi } } //test si la date est aujourd'hui private function estAujourdhui($jour, $mois, $annee) { if ( mktime(0, 0, 0, $mois, $jour, $annee) == mktime(0, 0, 0) ) return true; return false; } //test si une news est publiée private function newsPubliee($jour, $mois, $annee) { $bdd = new MySql(); $bdd->connecter(); $requete = "SELECT COUNT(id_news) as total "; $requete .= " FROM table_news WHERE "; $requete .= "(DAY(date_envoi) = '".$jour."') AND "; $requete .= "(MONTH(date_envoi) = '".$mois."') AND "; $requete .= "(YEAR(date_envoi) = '".$annee."')"; $resultat = $bdd->executerRequete($requete); $bdd->deconnecter(); $donnees = $bdd->prochainResultat($resultat); if ($donnees['total'] > 0) return true; return false; } //Affichage function afficher ( $annee) { //debut du tableau $tableau = "<div class=\"contentmois\">\n"; $tableau .= "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n"; $tableau .= "<tr>"; //mois précédent if ($this->mois == 1) { $tableau .= "<td class=\"navig\"><</td>"; } else { $tableau .= "<td class=\"navig\"><a href=\"?m=".($this->mois-1)."\"><</a></td>"; } //nom du mois $tableau .= "<td colspan=\"5\" class=\"titreMois\">".ucfirst($this->nomMois)." ".$annee."</td>"; //mois suivant if ($this->mois == 12) { $tableau .= "<td class=\"navig\">></td>"; } else { $tableau .= "<td class=\"navig\"><a href=\"?m=".($this->mois+1)."\">></a></td>"; } $tableau .= "</tr>\n"; // affichage des lettres des jours de la semaine $tableau .= "<tr>"; for($i=0;$i<7;$i++) { $tableau .= "<td class=\"jour\">".strtoupper(substr($this->nomJours[$i], 0,1))."</td>"; } $tableau .= "</tr>\n"; //numéro dans la semaine du premier jour du mois $jour = mktime(0,0,0,$this->mois,1,$annee); $numeroJour = date("w", $jour); //le dimanche (0) devient le septième jour if ($numeroJour == 0) $numeroJour = 7; if ($numeroJour > 1) $tableau .= "<tr>"; //affichage des casses vide de début de mois for ($i=0; $i<$numeroJour -1; $i++) { $tableau .="<td class=\"mois\"> </td>"; } $nbJours = cal_days_in_month ( CAL_GREGORIAN, $this->mois, $annee); for ($i=0;$i<$nbJours;$i++) { $jour = mktime(0,0,0,$this->mois,(1+$i), $annee); $numeroJour = date("w", $jour); if ($numeroJour == 0) $numeroJour =7; if ($numeroJour == 1) $tableau .= "<tr>"; //test sis ce jour est aujourd'hui if ( $this->estAujourdhui((1+$i), $this->mois, $annee) ) $tableau .= "<td class=\"aujourdhui\">"; else $tableau .= "<td class=\"jourNormal\">"; //test si il y a des news publiée à ce jour if ( $this->newsPubliee((1+$i), $this->mois, $annee) ) $tableau .= "<a href=\"news.php?m=".$this->mois."&jour=".($i+1)."\">".($i+1)."</a></td>"; else $tableau .= ($i+1)."</td>"; if ($numeroJour == 7) $tableau .= "</tr>\n"; } if ($jour != 7) { for( $i=$numeroJour+1;$i<=7;$i++) { $tableau .="<td class=\"mois\"> </td>"; } $tableau .="</tr>\n"; } $tableau .= "</table>\n</div>"; echo $tableau; return $tableau; } } ?> <? $m = new Mois(date("m")); $m->Afficher(2007); ?>
|