<?php // Set up the variables (today, month, year, cmd) // today = m/d/y function setvars() { // Default is today $today = getdate(); $month = $today['mon']; $year = $today['year']; $today = $month."/".$today['mday']."/".$year; // Return vars in an array return array("today" => $today, "month" => $month, "year" => $year); } // End setvars() // Do the document header function docheader($month,$year) { $month_text = date("F",strtotime($month."/1/".$year)); // If content header has not been sent, // send it if (!headers_sent()) { header('Content-type: text/html'); } // Print the document header (up to first date row) print <<<HTML <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1.dtd"> <html> <head> <title>Calendar - $Month $Year</title> <style type="text/css"> tr.weekdays td { width: 100px; text-align: center; } tr.week td { width: 100px; height: 100px; color: black; } </style> </head> <body> <table border="1"> <!-- Controls and calendar title (month) --> <tr> <td colspan="7" align="center"> <strong> $month_text $year </strong> </td> </tr> <!-- Day of week header row --> <tr class="weekdays"> <th>Sunday</th> <th>Monday</th> <th>Tuesday</th> <th>Wednesday</th> <th>Thursday</th> <th>Friday</th> <th>Saturday</th> </tr> <!-- Calendar (days) start here --> HTML; } // End docheader() // Do the document footer (close tags, end doc) function docfooter() { print <<<HTML <!-- Close all open tags, end document --> </table> </body> </html> HTML; } // End docfooter() // Print an empty day (cell) function emptyday() { print <<<HTML <td align="right" valign="top"> </td> HTML; } // End emptyday() // Print a day cell function day($today,$month,$day,$year) { $curday = $month."/".$day."/".$year; if ($curday == $today) { $font = " style=\"color: red;\""; } else { $font = ""; } print <<< HTML <td align="right" valign="top" $font>$day</td> HTML; } // End day() // Open or close a row function weekrow($cmd) { switch ($cmd) { case "open": print "<tr class=\"week\">\n"; break; case "close": print "</tr>\n"; break; } } // End weekrow() // Main program body function main() { // Set the date vars $vars = setvars(); $today = $vars['today']; $month = $vars['month']; $year = $vars['year']; // Do the header and open first row docheader($month,$year); weekrow("open"); // Set up first weekday and 1st day (m/1/y) $first_weekday = date("w",strtotime($month."/1/".$year)) + 1; $day = 1; // Print empty days up to the first weekday of month for ($weekday = 1; $weekday < $first_weekday; $weekday++) { emptyday(); } // Do rest of month while we have a valid date while (checkdate($month,$day,$year)) { // If SUN, open the row if ($weekday == 1) { weekrow("open"); } // Print day and increment day($today,$month,$day,$year); $weekday++; $day++; // If SAT, close row reset weekday if ($weekday > 7) { weekrow("close"); $weekday = 1; } } // Close current week while ($weekday != 1 && $weekday <= 7) { emptyday(); $weekday++; } // Close document docfooter(); } // End main(); // Kick it all off main(); ?>