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
|
<?php
// -----------------------------------------
// Source : http://cogites.com
// Script : E RESERV
// Version : 3.1
// -----------------------------------------
// Fonction pour afficher le calendrier
function showCalendar($periode)
{
// on reprend les variables
$an = getYear($periode);
$mois = getMonth($periode);
// si le fomulaire a été posté on prend la variable ID_location dans le champ caché du fomulaire de requête
if ($_POST) {
$id_annonce = $_POST['id_annonce'];
}
// sinon on prend la variable id_annonce'passée dans l'url. A la première ouverture de la pop.
else {
$id_annonce = $_GET['id_annonce'];
}
// on vérifie s'il y a des jours réservés dans le mois demandé. s'il y en a on les place dans le tableau $res
$res = array();
$jour = "1";
while ($jour <= 31) {
$date_test = "$an-$mois";
if ($jour < 10) {
$date_test .= "-0$jour";
} else {
$date_test .= "-$jour";
}
// la requete cherche si les jours du mois a afficher sont dans les intervals entre les dates de début et de fin d'une même réservation
$req = mysql_query("SELECT datedeb, etat FROM reserv WHERE id_annonce='$id_annonce' AND ('$date_test' BETWEEN datedeb AND datefin)") or die ("erreur requete chch jour reserve");
$contenu = mysql_fetch_array ($req);
$etat = $contenu['etat'] ;
echo $etat;
if (!empty($contenu)) {
$res[] = $jour;
}
$jour++;
// on teste jusqu'à jour <= 31
}
// si le tableau n'est pas vide il faudra le traiter
if (!empty($res)) {
$mois_in = "oui";
}
else{
$mois_in = "non";
}
// on commence la construction du tableau a afficher
$leCalendrier = "";
$leCalendrier .= "<div id=\"cadre_calendrier\">";
// Tableau des valeurs possibles pour un numéro de jour dans la semaine
$tableau = Array("0", "1", "2", "3", "4", "5", "6", "0");
// calcul du nombre de jour dans le mois
$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 au dessus du tableau
$leCalendrier .= "\n\t<h3>» " . monthNumToName(getMonth($periode)) . " " . getYear($periode) . "</h3>";
// Affichage des entêtes
$leCalendrier .= "
<ul id=\"libelle\">
\t<li>L</li>
\t<li>M</li>
\t<li>M</li>
\t<li>J</li>
\t<li>V</li>
\t<li>S</li>
\t<li>D</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\">";
// Si le jour calendrier == jour de la semaine en cours (puce ou nombre)
if (Date("w", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == $tableau[$indexe]) {
$afficheJour = Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode)));
// c un jour de la semaine sans être aujourd'hui alors on test pour savoir s'il est réservé
if ($mois_in == "oui") {
// si $affichJour est dans le tableau des jours réservés alors on le met en rouge
if (in_array ($afficheJour, $res)) {
if ($etat == 1) { $class = " class=\"reserve\""; } else { $class = " class=\"lib\""; }
// la date du jour en bleu gras sur fond rouge
if (Date("Y-m-d", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == Date("Y-m-d")) {
$class = " class=\"itemCurrentItem_in\"";
}
} else {
$class = "";
// si $affichJour n'est pas dans le tableau des jours réservés alors on ne le met pas en forme
// la date du jour en bleu gras sur fond blanc
if (Date("Y-m-d", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == Date("Y-m-d")) {
$class = " class=\"itemCurrentItem_out\"";
}
}
} else {
$class = "";
// la date du jour en bleu gras sur fond blanc
if (Date("Y-m-d", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == Date("Y-m-d")) {
$class = " class=\"itemCurrentItem_out\"";
}
}
// 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;
} else {
$indexe++;
}
}
// Ajustement du tableau
for ($i = $indexe; $i <= 7; $i++) {
$leCalendrier .= "\n\t\t<li> </li>";
}
$leCalendrier .= "\n\t</ul></div>\n";
// Retour de la chaine contenant le Calendrier
return $leCalendrier;
}
?> |
Partager