[ 1 129 564 ]
[ 38.107.179.241 ]
PHP/MySQL - Calendrier avec CSSAfficher un calendrier dans une page avec mise en forme CSS.
Dans cet exemple il y a deux fichiers à inclure (calendrier.css, calendrier.inc.php). Pour afficher le calendrier dans votre page, il suffira d'appeler la fonction showCalendar() en passant en paramètre le mois et l'année sous la forme YYYY-MM.
echo showCalendar(date("Y-m"));
calendrier.css contient les mises en formes :
#calendar {
text-align: center;
margin: 0 auto;
background-color: #aaa;
}
#mois {
font-weight: bold;
background-color: white;
}
#jours td {
width: 22px;
background-color: yellow;
}
.ligne td {
padding: 3px;
}
td.itemCurrentItem {
color: white;
background-color: black;
}
td.itemSelectedItem {
background-color: #eee;
}
calendrier.inc.php contient le script générant le calendrier :
<?php
// 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 = "<table cellpadding=\"0\" cellspacing=\"1\" id=\"calendar\">";
// 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;
// Affichage du mois et de l'année
$leCalendrier .= "<tr><td colspan=\"7\" id=\"mois\">".monthNumToName(getMonth($periode))." ".getYear($periode)."</td></tr>";
// Affichage des entêtes
$leCalendrier .= "<tr id=\"jours\"><td>L</td><td>M</td><td>M</td><td>J</td><td>V</td><td>S</td><td>D</td></tr>";
// Tant que l'on n'a pas affecté tous les jours du mois traité
while ($pas < $nb_jour) {
if ($indexe == 1) $leCalendrier .= "<tr class=\"ligne\">";
// 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=\"itemSelectedItem\"";
$afficheJour = Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode)));}
else {
$class = "";}
}
// Ajout de la case avec la date
$leCalendrier .= "<td $class>$afficheJour</td>";
$pas++;}
else {
// Ajout d'une case vide
$leCalendrier .= "<td> </td>";}
if ($indexe == 7 && $pas < $nb_jour) { $leCalendrier .= "</tr>"; $indexe = 1;} else {$indexe++;}
}
// Ajustement du tableau
for ($i = $indexe; $i <= 7; $i++) {
$leCalendrier .= "<td> </td>";
}
$leCalendrier .= "</tr></table>";
// Retour de la chaine contenant le Calendrier
return $leCalendrier;
}
?>
[0] commentaire - Voir/Editer |
||||||||||||||||||||||||||||||||||||||||||||||||||