par
yaug » 19 nov. 2008, 12:17
Bonjour.
Après quelques modifs, je pense avoir obtenu ce qu'il te faut :
voici le code :
<?php
function Calendrier($month,$year,$links) {
$MonthNames = array(1 => "Janvier","Fevrier","Mars","Avril","Mai","Juin",
"Juillet","Aout","Septembre","Octobre","Novembre","Decembre");
$monthname = $MonthNames[$month+0];
// on ouvre la table
echo '<table class="cal" cellspacing="1">';
// Première ligne = mois et année ou link[0]
$title = array_key_exists(0, $links) ? $links[0] : $monthname.' '.$year;
echo '<tr><td colspan="7" class="cal_titre">'.$title.'</td>'."</tr>\n";
// Seconde lignes = initiales des jours de la semaine
$DayNames = array("S","D","L","M","M","J","V");
echo '<tr>'; foreach ($DayNames as $d) echo '<th>'.$d.'</th>'; echo "</tr>\n";
// On regarde si aujourd'hui est dans ce mois pour mettre un style particulier
if ($year == date('Y') && $month == date('m'))
$today = date('d');
else
$today = 0;
$time = mktime(0,0,0,$month,1,$year); // timestamp du 1er du mois demandé
$days_in_month = date('t',$time); // nombre de jours dans le mois
$firstday = date('w',$time); // jour de la semaine du 1er du mois
if ($firstday == 0) $firstday = 7; // attention, en php, dimanche = 0
$daycode = 6; // ($daycode % 7) va nous indiquer le jour de la semaine.
// on commence par le lundi, c'est-à-dire 1.
// on ouvre une première ligne pour le calendrier proprement dit :
echo '<tr>';
// on met des cases blanches jusqu'à la veille du 1er du mois :
for ( ; $daycode != $firstday ; $daycode++){
if($daycode > 6) $daycode = 0 ;
echo '<td> </td>';
}
// boucle sur tous les jours du mois :
for ($numday = 1; $numday <= $days_in_month; $numday++, $daycode++) {
// si on en est au lundi (sauf le 1er),
// on ferme la ligne précédente et on en ouvre une nouvelle
if ($daycode%7 == 6 && $numday != 1) echo "</tr>\n".'<tr>';
// on ouvre la case (avec un style particulier s'il s'agit d'aujourd'hui)
echo ($numday == $today ? '<td class="today">' : '<td>');
// on affiche le numéro du jour ou le contenu donné par l'utilisateur
echo (array_key_exists($numday, $links) ? $links[$numday] : $numday);
// on ferme la case
echo '</td>';
}
// on met des cases blanches pour completer la dernière semaine si besoin :
for ( ; $daycode%7 != 1; $daycode++) echo '<td> </td>';
// on ferme la dernière ligne, et la table.
echo '</tr>'; echo "</table>\n\n";
}
//octobre
$calendrier1 = calendrier(10, 2008, array("http://test.com"));
echo "<b>octobre</b> : " .$calendrier ." <br />";
//novembre
$calendrier1 = calendrier(11, 2008, array("http://test.com"));
echo "<b>novembre</b> : " .$calendrier ." <br />";
//décembre
$calendrier1 = calendrier(12, 2008, array("http://test.com"));
echo "<b>décembre</b> : " .$calendrier ." <br />";
?>
Et le résultat pour les 3 mois voulu se trouve
ICI
Bonjour.
Après quelques modifs, je pense avoir obtenu ce qu'il te faut :
voici le code :
[php]
<?php
function Calendrier($month,$year,$links) {
$MonthNames = array(1 => "Janvier","Fevrier","Mars","Avril","Mai","Juin",
"Juillet","Aout","Septembre","Octobre","Novembre","Decembre");
$monthname = $MonthNames[$month+0];
// on ouvre la table
echo '<table class="cal" cellspacing="1">';
// Première ligne = mois et année ou link[0]
$title = array_key_exists(0, $links) ? $links[0] : $monthname.' '.$year;
echo '<tr><td colspan="7" class="cal_titre">'.$title.'</td>'."</tr>\n";
// Seconde lignes = initiales des jours de la semaine
$DayNames = array("S","D","L","M","M","J","V");
echo '<tr>'; foreach ($DayNames as $d) echo '<th>'.$d.'</th>'; echo "</tr>\n";
// On regarde si aujourd'hui est dans ce mois pour mettre un style particulier
if ($year == date('Y') && $month == date('m'))
$today = date('d');
else
$today = 0;
$time = mktime(0,0,0,$month,1,$year); // timestamp du 1er du mois demandé
$days_in_month = date('t',$time); // nombre de jours dans le mois
$firstday = date('w',$time); // jour de la semaine du 1er du mois
if ($firstday == 0) $firstday = 7; // attention, en php, dimanche = 0
$daycode = 6; // ($daycode % 7) va nous indiquer le jour de la semaine.
// on commence par le lundi, c'est-à-dire 1.
// on ouvre une première ligne pour le calendrier proprement dit :
echo '<tr>';
// on met des cases blanches jusqu'à la veille du 1er du mois :
for ( ; $daycode != $firstday ; $daycode++){
if($daycode > 6) $daycode = 0 ;
echo '<td> </td>';
}
// boucle sur tous les jours du mois :
for ($numday = 1; $numday <= $days_in_month; $numday++, $daycode++) {
// si on en est au lundi (sauf le 1er),
// on ferme la ligne précédente et on en ouvre une nouvelle
if ($daycode%7 == 6 && $numday != 1) echo "</tr>\n".'<tr>';
// on ouvre la case (avec un style particulier s'il s'agit d'aujourd'hui)
echo ($numday == $today ? '<td class="today">' : '<td>');
// on affiche le numéro du jour ou le contenu donné par l'utilisateur
echo (array_key_exists($numday, $links) ? $links[$numday] : $numday);
// on ferme la case
echo '</td>';
}
// on met des cases blanches pour completer la dernière semaine si besoin :
for ( ; $daycode%7 != 1; $daycode++) echo '<td> </td>';
// on ferme la dernière ligne, et la table.
echo '</tr>'; echo "</table>\n\n";
}
//octobre
$calendrier1 = calendrier(10, 2008, array("http://test.com"));
echo "<b>octobre</b> : " .$calendrier ." <br />";
//novembre
$calendrier1 = calendrier(11, 2008, array("http://test.com"));
echo "<b>novembre</b> : " .$calendrier ." <br />";
//décembre
$calendrier1 = calendrier(12, 2008, array("http://test.com"));
echo "<b>décembre</b> : " .$calendrier ." <br />";
?>
[/php]
Et le résultat pour les 3 mois voulu se trouve [url=http://chroniques-lunaires.com/test/calendrier.php]ICI[/url]