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
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Calendrier</title>
<style type="text/css">
.calendar tr, td { border:#4A4A4A 1px solid; text-align:center; }
.calendar td { width:25px; }
.calendar a img { border:0px; }
.calendar .caption,.navigation a:link,a:visited { font-weight:bold; }
.calendar .caption { border-left:0px; border-right:0px; }
.calendar .head .border_right { border-right:0px; }
.calendar .head .border_left { border-left:0px; }
.caption { text-align:center; }
.calendar .navigation a:link,a:visited { color:#333333; }
.calendar .head { background-color:#E1E1E1; }
.calendar .days_list { background-color:#EEEEEE; }
.calendar .days { background-color:#F9F9F9; }
</style>
</head>
<body>
<?php
// french ; english
$language_selection = 'french';
### French
$calendar_txt['french']['mois'] = array('', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
$calendar_txt['french']['jours'] = array('Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche');
$calendar_txt['french']['voc'] = array('Année précédente', 'Mois précédent', 'Mois suivant', 'Année suivante');
### English
$calendar_txt['english']['mois'] = array('', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October','November', 'December');
$calendar_txt['english']['jours'] = array('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday');
$calendar_txt['english']['voc'] = array('Last year', 'Last month', 'Next month', 'Next year');
// Récupére la date par GET ou date courante
$jourActuel = (int)( $_GET['jour'] ? $_GET['jour'] : date('d') );
$jourActuel = (int)( $jourActuel < 1902 ? date('d') : $jourActuel );
$jourActuel = (int)( $jourActuel > 2036 ? date('d') : $jourActuel );
$moisActuel = (int)( $_GET['mois'] ? $_GET['mois'] : date('m') );
$anneeActuelle = (int)( $_GET['annee'] ? $_GET['annee'] : date('Y') );
$nomMoisActuel = $calendar_txt[$language_selection]['mois'][$moisActuel];
$dateActuelle = strtotime( sprintf('%s-%s-%s', $anneeActuelle, $moisActuel, $jourActuel) );
// Récupére le nombre de jours dans le mois
$nbJoursMois = date('t', $dateActuelle);
// Menu de navigation annee/mois
$nextAnnee = date('Y', strtotime('+1 year', $dateActuelle) ); // Année suivante
$prevAnnee = date('Y', strtotime('-1 year', $dateActuelle) ); // Année précédente
$nextMois = date('m', strtotime('+1 month', $dateActuelle) ); // Mois suivant
$prevMois = date('m', strtotime('-1 month', $dateActuelle) ); // Mois précédent
// Affichage
$numJourSemaine = 1;
$jour = 1;
$base_jours = $calendar_txt[$language_selection]['jours'];
$base_mois = $calendar_txt[$language_selection]['mois'];
$base_voc = $calendar_txt[$language_selection]['voc'];
// Génération du tableau
echo '<table class="calendar" cellpadding="3" cellspacing="0">
<tr class="head"><td colspan="1" class="navigation border_right">
<a href="?annee='.$prevAnnee.'&mois='.$moisActuel.'" title="'.$base_voc[0].'"><img src="./images/last_year.png" alt="<<"></a><br />
<a href="?annee='.$anneeActuelle.'&mois='.$prevMois.'" title="'.$base_voc[1].'"><img src="./images/last_month.png" alt="<"></a></td>
<td colspan="5" class="caption">'.$nomMoisActuel.' '.$anneeActuelle.'</td>
<td colspan="1" class="navigation border_left">
<a href="?annee='.$nextAnnee.'&mois='.$moisActuel.'" title="'.$base_voc[3].'"><img src="./images/next_year.png" alt=">>"></a><br />
<a href="?annee='.$anneeActuelle.'&mois='.$nextMois.'" title="'.$base_voc[2].'"><img src="./images/next_month.png" alt=">"></a>
</td></tr>
<tr class="days_list"><td title="'.$base_jours[0].'">'.$base_jours[0][0].'</td><td title="'.$base_jours[1].'">'.$base_jours[1][0].'</td><td title="'.$base_jours[2].'">'.$base_jours[2][0].'</td><td title="'.$base_jours[3].'">'.$base_jours[3][0].'</td><td title="'.$base_jours[4].'">'.$base_jours[4][0].'</td><td title="'.$base_jours[5].'">'.$base_jours[5][0].'</td><td title="'.$base_jours[6].'">'.$base_jours[6][0].'</td></tr><tr class="days">';
// Affichage des jours
while( $jour <= $nbJoursMois ){
// Date du jour traité
$dateTraitee = sprintf("%d-%d-%d", $anneeActuelle, $moisActuel, $jour);
$numJourSemaineDateTraitee = (int)date("N", strtotime($dateTraitee) );
// Afficher le jour à son emplacement par rapport au jour de la semaine
if( $numJourSemaineDateTraitee == $numJourSemaine ){
// Couleur de fond du jour actuel
if( $jour == $jourActuel && $moisActuel == date('m') && $anneeActuelle == date('Y') ){
$couleurFond = ' background-color:yellow; font-weight:bold;';
} else {
$couleurFond = '';
}
if( $language_selection == 'french' ){
$complete_date = $base_jours[$numJourSemaineDateTraitee-1].' '.$jour.' '.$base_mois[$moisActuel].' '.$anneeActuelle;
} elseif( $language_selection == 'english' ){
$complete_date = $base_jours[$numJourSemaineDateTraitee-1].', '.$base_mois[$moisActuel].' '.$jour.date('S', $jour).' '.$anneeActuelle;
} else {
$complete_date = $base_jours[$numJourSemaineDateTraitee-1].' '.$jour.' '.$base_mois[$moisActuel].' '.$anneeActuelle;
}
// Afficher le jour à son empalcement
echo '<td style="'.$couleurFond.'" onclick="alert(\''.$complete_date.'\')" title="'.$complete_date.'">'.$jour.'</td>';
$jour++; // Passer au jour suivant du mois
} else {
echo '<td> </td>'; // Emplacement vide
}
// Passer au jour suivant de la semaine
$numJourSemaine++;
if ( $numJourSemaine > 7 ) { // Au-delà de Dimanche
echo '</tr><tr class="days">';
$numJourSemaine = 1; // Retour au Lundi
}
}
// Complession des dernières cellules
$fin_tableau = 7-($numJourSemaine-1);
if($fin_tableau < 7) for($i=1;$i<=$fin_tableau;$i++) echo '<td> </td>';
echo '</tr></table>';
?>
</body>
</html> |