Bon,
J'ai essayé de faire un petit mix avec les explication de vos deux posts.
Mais ça ne marche pas. Les date ne sont pas coloré.
Je reposte mon code, après modifications :
<?php
if (isset($_POST['change'])){
$oldDate = $_POST['currentDate'];
switch ($_POST['change']){
case ">":
$tab = getdate($_POST['currentDate']);
$tab["mon"]++;
$date = mktime(0,0,0,$tab['mon'], $tab['mday'], $tab['year']);
break;
case "<":
$tab = getdate($_POST['currentDate']);
$tab["mon"]--;
$date = mktime(0,0,0,$tab['mon'], $tab['mday'], $tab['year']);
break;
}
}
// substr garde la chaine de caract? d?rmin?par $start
function getSeconde($valeur) {
return substr($valeur, 17, 2);
}
function getMinute($valeur) {
return substr($valeur, 14, 2);
}
function getheure($valeur) {
return substr($valeur, 11, 2);
}
function getjour($valeur) {
return substr($valeur, 8, 2);
}
function getMois($valeur) {
return substr($valeur, 5, 2);
}
function getAnnee ($valeur) {
return substr($valeur, 0, 4);
}
function numMois($mois) {
$tableau = Array("", "Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout" , "Septembre", "Octobre", "Novembre", "Décembre");
return (intval($mois) > 0 && intval($mois) < 13) ? $tableau[intval($mois)] : "Ind?ni";
} //intval converti par d?ult une valeur en base 10
//Fonction pour afficher le calendrier
function showCalendar($timestamp) {
$periode = date("Y-m", $timestamp);
$leCalendrier = "";
$mois = getMois($periode);
$annee = getAnnee ($periode);
// Tableau des valeurs possibles pour un num? de jour dans la semaine
$tableau = Array("0", "1", "2", "3", "4", "5", "6", "0");
$nb_jour = Date("t", mktime(0, 0, 0, $mois, 1, $annee));
$pas = 0;
$index = 1;
mysql_connect("localhost", "root", "");
mysql_select_db("calendrier");
$i = 0;
$evenement = array(); //génération du tableau
$req_array = mysql_query("SELECT * FROM evenement")or die(mysql_error());
while ($champs = mysql_fetch_array($req_array)) {
$evenements[$i][0] = $champs[0]; // Date
$evenements[$i][1] = $champs[1]; // Titre
$evenements[$i][2] = $champs[2]; // Description
$i++;
}
// Affichage du mois et de l'ann?en titre
$leCalendrier .= "<form method=\"post\" action=\"new.php\"><h2><input type=\"submit\" value=\"<\" name=\"change\" />" . numMois($mois) . " " . $annee . "<input type=\"submit\" value=\">\" name=\"change\" /></h2><input type=\"hidden\" name=\"currentDate\" value=\"" . $timestamp . "\" /></form>";
// Affichage des ent?s
$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?ous les jours du mois trait?
while ($pas < $nb_jour) {
if ($index == 1) $leCalendrier .= "\n\t<ul class=\"ligne\">";
// Si le jour calendrier == jour de la semaine en cours
if (Date("w", mktime(0, 0, 0, $mois, 1 + $pas, $annee)) == $tableau[$index]) {
// Si jour calendrier == aujourd'hui
$afficheJour = Date("j", mktime(0, 0, 0, $mois, 1 + $pas, $annee));
if (Date("Y-m-d", mktime(0, 0, 0, $mois, 1 + $pas, $annee)) == Date("Y-m-d")) {
$class = " class=\"itemCurrentItem\"";
}
else {
//Il faut parcourir le tableau pour voir si la date qui va ?e existe dans la bdd
$LaDate = $annee .'-'. numMois($mois). '-' . $afficheJour ;
if (in_array($LaDate, $evenement)) {
$class = " class=\"itemExistingItem\"";
//apr?pour choisir les jours avec liens, base de donn?SQL
$afficheJour = "<span>" . Date("j", mktime(0, 0, 0, $mois, 1 + $pas, $annee)) . "</span>";
}
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 ($index == 7 && $pas < $nb_jour) { $leCalendrier .= "\n\t</ul>"; $index = 1;} else {$index++;}
}
// Ajustement du tableau
for ($i = $index; $i <= 7; $i++) {
$leCalendrier .= "\n\t\t<li> </li>";
}
$leCalendrier .= "\n\t</ul>\n";
// Retour de la chaine contenant le Calendrier
return $leCalendrier;
}
if (!isset($date)) $date = time();
?>
<html>
<head>
<link rel="stylesheet" media="screen" type="text/css" title="style" href="style.css" />
</head>
<body class="back">
<?php
echo showCalendar($date);
?>
</body>
</html>
Je pense que le probleme vient du passage souligné.
Ma base de données s'appelle Calendrier, ma table : evenement.
Une idée?