1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
| <?php
echo('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="Content-Language" content="fr" />
<title></title>
<link rel="stylesheet" href="style.css" type="text/css" media="all" />
</head>
<body>
');
echo (showCalendar('2009-02'));
// fonctions utiles, $valeur représente une date au format AAAA-MM-JJ
function getSecond($valeur) {
return substr($valeur, 17, 2);
}
function getMinute($valeur) {
return substr($valeur, 14, 2);
}
function getHour($valeur) {
return substr($valeur, 11, 2);
}
function getDay($valeur) {
return substr($valeur, 8, 2);
}
function getMonth($valeur) {
return substr($valeur, 5, 2);
}
function getYear($valeur) {
return substr($valeur, 0, 4);
}
function monthNumToName($mois) {
$tableau = Array("", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aôut", "Septembre", "Octobre", "Novembre", "Décembre");
return (intval($mois) > 0 && intval($mois) < 13) ? $tableau[intval($mois)] : "Indéfini";
}
// Fonction pour afficher le calendrier
function showCalendar($periode) {
$leCalendrier = "";
// Tableau des valeurs possibles pour un numéro de jour dans la semaine
$tableau = Array("0", "1", "2", "3", "4", "5", "6", "0");
$nb_jour = Date("t", mktime(0, 0, 0, getMonth($periode), 1, getYear($periode)));
$pas = 0;
$indexe = 1;
// calcule la première semaine du mois courant
$nb_jour_annee = 0;
$num_mois = getMonth($periode);
for ($i = 1; $i < $num_mois; $i++) {
$nb_jour_annee += Date("t", mktime(0, 0, 0, $i , 1, getYear($periode)));
}
$semaine = $nb_jour_annee/7;
$semaine = (int)$semaine;
$semaine++;
//
// Affichage du mois et de l'année
$leCalendrier .= "\n\t<h2>» " . monthNumToName(getMonth($periode)) . " " . getYear($periode) . "</h2>";
//--> // Affichage des entêtes
$leCalendrier .= "
<ul id=\"libelle\">
\t<li class=\"titre_jour\">L</li>
\t<li class=\"titre_jour\">M</li>
\t<li class=\"titre_jour\">M</li>
\t<li class=\"titre_jour\">J</li>
\t<li class=\"titre_jour\">V</li>
\t<li class=\"titre_jour\">S</li>
\t<li class=\"titre_jour\">D</li>
\t<li id=\"titre_semaine\"><div id=\"t_semaine\">sem.</div></li>
</ul>";
// Tant que l'on n'a pas affecté tous les jours du mois traité
while ($pas < $nb_jour) {
if ($indexe == 1) { $leCalendrier .= "\n\t<ul class=\"ligne\">";
//--> // ajoute le numéro de la semaine...
$leCalendrier .= '<div class="numSemaine">'.$semaine.'</div>'; }
// Si le jour calendrier == jour de la semaine en cours
if (Date("w", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == $tableau[$indexe]) {
// Si jour calendrier == aujourd'hui
$afficheJour = Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode)));
if (Date("Y-m-d", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == Date("Y-m-d")) {
$class = " class=\"itemCurrentItem\"";
}
else {
// 1 est toujours vrai => on affiche un lien à chaque fois
// A vous de faire les tests nécessaire si vous gérer un agenda par exemple
if (1) {
$class = " class=\"itemExistingItem\"";
$afficheJour = "<a href=\"\">" . Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) . "</a>";
}
else {
$class = "";
}
}
// Ajout de la case avec la date
$leCalendrier .= "\n\t\t<li$class>$afficheJour</li>";
$pas++;
}
//
else {
// Ajout d'une case vide
$leCalendrier .= "\n\t\t<li> </li>";
}
if ($indexe == 7 && $pas < $nb_jour) {
$leCalendrier .= "\n\t</ul>"; $indexe = 1;
// incrémente le numéro de la semaine
$semaine++;
} else {$indexe++;}
}
// Ajustement du tableau
for ($i = $indexe; $i <= 7; $i++) {
$leCalendrier .= "\n\t\t<li> </li>";
}
$leCalendrier .= "\n\t</ul>\n";
// Retour de la chaine contenant le Calendrier
return $leCalendrier;
}
echo('</body></html>');
?> |
Partager