Revision: 46337
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at May 17, 2011 19:52 by dubogii
Initial Code
<?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; } ?> Usage Build a calendar of the current month: <?php $dateComponents = getdate(); $month = $dateComponents['mon']; $year = $dateComponents['year']; echo build_calendar($month,$year,$dateArray); ?>
Initial URL
http://css-tricks.com/snippets/php/build-a-calendar-table/
Initial Description
Initial Title
Build a Calendar Table
Initial Tags
table
Initial Language
PHP