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
|
<?php
function calendrier($m_donne,$a_donne){
include("config.php");
$m = $_GET['m'];
$a = $_GET['a'];
if ($m == "") { $m = $m_donne; }
if ($a == "") { $a = $a_donne; }
if (($a % 4) == 0){
$nbrjour = array(0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
}else{
$nbrjour = array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
}
$premierdumois = jddayofweek(cal_to_jd($CAL_FRENCH, $m, 1, $a), 0);
//jdjayofweek :
//retourne le numéro du jour comme un entier ou
//une chaîne contenant le nom du jour (anglais grégorien) ou
//une chaîne contenant le nom abrégé du jour de la semaine (anglais grégorien).
if($premierdumois == 0){
$premierdumois = 7;
}
//tableau avec le nom du mois et la liste des jours de la semaine
echo "<fieldset style='width: 16%'><legend>".affiche_legend()."</legend>";
echo "<table border='1'><td>"
.mois_precedent($m,$mois[$m],$a)
."</td><td>$mois[$m] $a</td><td>"
.mois_suivant($m,$a)
."</td></tr><tr></table><table border='1'>"
."<td>$jours[1]</td><td>$jours[2]</td><td>$jours[3]</td><td>$jours[4]</td>
<td>$jours[5]</td><td>$jours[6]</td><td>$jours[7]</td></tr><tr>";
//affiche les jours de la semaine
$jour=1;
//affiche les jours du mois précédent qui apparaissent
$joursmoisavant = $nbrjour[$m-1] - $premierdumois+2;
//affiche les jours du mois suivant
$jourmoissuivant = 1;
if($m == 1){
//si janvier, le mois d'avant n'est pas à 0 mais 31 jours!
$joursmoisavant = $nbrjour[$m+11] - $premierdumois+2;
}
//affichage du calendrier !
for($i=1;$i<40;$i++){
// Tant que la variable i ne correspond pas au premier jour du mois,
//on fait des cellules de tableau avec les derniers jours du mois précédent
if($i < $premierdumois)
{
echo "<td class=\"cases_vides\">$joursmoisavant</td>";
$joursmoisavant++;
}
else
{
if($jour == date("d") && $m == date("n"))
{ //Si la variable $jour correspond à la date d'aujourd'hui, la case est d'une couleur différente
echo "<td class=\"aujourdhui\">$jour</td>";
}
else
{
echo "<td class=\"jours\">$jour</td>";
}
$jour++; //On passe au lendemain ^^
//Si la variable $jour est plus élevée que le nombre de jours du mois, c'est que c'est la fin du mois!
// On remplit les cases vides avec les premiers jours des mois suivants
// et on met la variable $i à 41 pour sortir de la boucle
if($jour > ($nbrjour[$m]))
{
while($i % 7 != 0)
{
echo "<td class=\"cases_vides\">$jourmoissuivant</td>";
$i++;
$jourmoissuivant++;
}
echo "</tr></table>";
$i=41;
}
}
// Si la variable i correspond à un dimanche (multiple de 7), on passe à la ligne suivante dans le tableau
if($i % 7 == 0){
echo "</tr><tr>";
}
}
}
//FONCTION POUR AFFICHER LE MOINS SUIVANT
function mois_suivant($m,$a){
$m++; //mois suivant, donc on incrémente de 1
if($m==13){ //si le mois et 13 ça joue pas! cela veut dire qu'il faut augmenter l'année de 1 et repasser le mois à 1
$a++;
$m=1;
}
return '<a href="'.$_SERVER['PHP_SELF']."?m=$m&a=$a\"> » </a>";
}
//FONCTION POUR AFFICHER LE MOINS PRECEDENT
function mois_precedent($m,$mois,$a){
$m--;
if($m==0){
$a--;
$m=12;
}
return '<a href="'.$_SERVER['PHP_SELF']."?m=$m&a=$a\"> « </a>";
}
//soit on considère
//-> 12/2009 + 1 mois = 13/2009 (j'ai decidé de choisir cette option)
//soit
//-> 12/2009 + 1 mois = 1/2010
function affiche_legend()
{
$m = date(m);
$a = date(Y);
$nom_jour_fr = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samdi");
$mois_fr = Array("", "JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AOÛT",
"SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE");
list($nom_jour, $jour, $mois, $annee) = explode('/', date("w/d/n/Y"));
$premierJ = date("w",mktime(1,1,1,$m,1,$a));
$dateJour = $nom_jour_fr[$nom_jour].' '.$jour.' '.$mois_fr[$mois].' '.$annee;
return $dateJour;
}
echo"</fieldset>";
?> |
Partager