<?php
function build_calendar($month,$year,$dateArray) {
// Create array containing abbreviations of days of week.
$daysOfWeek = array('S','M','T','W','T','F','S');
// What is the first day of the month in question?
$firstDayOfMonth = mktime(0,0,0,$month,1,$year);
// How many days does this month contain?
$numberDays = date('t',$firstDayOfMonth);
// Retrieve some information about the first day of the
// month in question.
$dateComponents = getdate($firstDayOfMonth);
// What is the name of the month in question?
$monthName = $dateComponents['month'];
// What is the index value (0-6) of the first day of the
// month in question.
$dayOfWeek = $dateComponents['wday'];
// Create the table tag opener and day headers
$calendar = "<table class='calendar'>";
$calendar .= "<caption>$monthName $year</caption>";
$calendar .= "<tr>";
// Create the calendar headers
foreach($daysOfWeek as $day) {
$calendar .= "<th class='header'>$day</th>";
}
// Create the rest of the calendar
// Initiate the day counter, starting with the 1st.
$currentDay = 1;
$calendar .= "</tr><tr>";
// The variable $dayOfWeek is used to
// ensure that the calendar
// display consists of exactly 7 columns.
if ($dayOfWeek > 0) {
$calendar .= "<td colspan='$dayOfWeek'> </td>";
}
$month = str_pad($month, 2, "0", STR_PAD_LEFT);
while ($currentDay <= $numberDays) {
// Seventh column (Saturday) reached. Start a new row.
if ($dayOfWeek == 7) {
$dayOfWeek = 0;
$calendar .= "</tr><tr>";
}
$currentDayRel = str_pad($currentDay, 2, "0", STR_PAD_LEFT);
$date = "$year-$month-$currentDayRel";
$calendar .= "<td class='day' rel='$date'>$currentDay</td>";
// Increment counters
$currentDay++;
$dayOfWeek++;
}
// Complete the row of the last week in month, if necessary
if ($dayOfWeek != 7) {
$remainingDays = 7 - $dayOfWeek;
$calendar .= "<td colspan='$remainingDays'> </td>";
}
$calendar .= "</tr>";
$calendar .= "</table>";
return $calendar;
}
?>
Verwendung
Um eine Tabelle für Mai 2005 auszugeben, tun Sie einfach
<?php echo build_calendar(05,2005); ?>
Und Sie erhalten eine Tabelle wie diese
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
| 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 | ||||
DAS! Vielen Dank für das Posten!
Endlich eine prägnante und klare Erklärung, wie man einen Kalender erstellt!
Meiner Meinung nach könnte es hundert weitere Kommentare geben, wie man das anders macht, aber Sie sind der beste Lehrer!
Hallo, woher kommst du, meine E-Mail ist [email protected], zeige es mir bitte. Tschüss.
Ich habe vor einiger Zeit gelernt, wie man das macht, aber auf prozedurale Weise (was irgendwie langweilig war). Cool, eine Funktion zu sehen, die das alles enthält. Danke fürs Teilen, Chris!
Großartig, danke für das Posten, ich kann mir mehr als ein paar Anwendungsmöglichkeiten vorstellen.
Wie füge ich Ereignisse hinzu?
Ist das noch aktuell??? Ich erhalte den folgenden Fehler
Fatal error: Uncaught ArgumentCountError: Too few arguments to function build_calendar(), 2 passed in … and exactly 3 expected ..
Ich habe versucht, „ wie im Beispiel zu verwenden.
Kannst du mir das CSS geben, das du für den Kalender verwendet hast?