| px | top | add code | search | signup | login | help |
<?php
# This is distributed under the terms of the GNU General Public License.
# Since php3 comes with the license, and I am not in control of the
# distribution of this code, I will refer you to the file COPYING
# that came with PHP. If you can't find it there, go see
# http://www.fsf.org/copyleft/gpl.html
# Copyright 1998 Peter C. Norton <spacey@pobox.com>
class tableCalendar {
# Create an html calendar for a month.
# Interface:
# $calendar = new tableCalendar;
#
# Set necessary variables:
# $calendar->setDay($day); # Integer
# $calendar->setMonth($month); # Integer
# $calendar->setYear($year); # Integer
# $calendar->setFrameTarget($target_string); # String
# $calendar->setHrefString($href_string); # String
#
# $calendar->printCal(); # This'll print your table for you.
var $selectedDay, $selectedMonth, $selectedYear;
var $days;
var $frametarget, $href;
var $DEBUGGING_SET = 0;
function setDay ($day) {
$this->selectedDay = $day;
}
function setMonth ($month) {
$this->selectedMonth = $month;
}
function setYear ($year) {
$this->selectedYear = $year;
}
function setFrameTarget($target_string) {
$this->frametarget = "target = \"$target_string\"";
}
function setHref($href_string) {
$this->href = $href_string;
}
function setAndCheckDefaults () {
if (!$this->selectedDay ) {
$this->selectedDay = date('d');
}
if (!$this->selectedMonth) {
$this->selectedMonth = date('m');
}
if (!$this->selectedYear) {
$this->selectedYear = date('Y');
}
$this->days = array(0=>'Sun',1=>'Mon',2=>'Tue',3=>'Wed',
4=>'Thu',5=>'Fri',6=>'Sat');
}
function printCal () {
$monthOrig;
$monthTest;
$monthName;
$firstday;
$dayRow;
$lastday = 31;
$this->setAndCheckDefaults(); # make sure we do the right thing(s)
# Find out the first day of the week!
$firstday = date('w',mktime(0,0,0,$this->selectedMonth,1,$this->selectedYear));
# have to perform a loop to test from 31 backwards,
# to see what the last day of the month is
$lastday = 31;
do {
$monthOrig = date('m',mktime(0,0,0,$this->selectedMonth,1,$this->selectedYear));
$monthTest = date('m',mktime(0,0,0,$this->selectedMonth,$lastday,$this->selectedYear));
if ($monthTest != $monthOrig) { $lastday -= 1; };
} while ($monthTest != $monthOrig);
$monthName = date('F',mktime(0,0,0,$this->selectedMonth,1,$this->selectedYear));
if($this->DEBUGGING_SET != 0) {
print("<p>first day of the first week of $selectedMonth $selectedYear is $firstday (from 0 to 6) <p>\n");
print("The last day of $selectedMonth $selectedYear is $lastday\n<p>");
}
$this->printTable($monthName, $firstday, $lastday);
}
function printHref($day) {
$href = '';
if($this->href) {
print("<A HREF=\"$this->href?month=$this->selectedMonth&day=$day&year=$this->selectedYear\" $this->frametarget>$day</a>");
}
}
function printTable ($monthName, $firstDay, $lastDay) {
$dayRow = 0;
$day = 0;
$targetString;
$adjustedDay;
print("<table bgcolor=\"#FFFFFF\">");
print("<caption valign=\"center\"><b>$monthName $this->selectedYear</b></caption>");
print("<tr>\n");
# Print days along the top.
for($i=0; $i<=6; $i++) {
print("<td width=10%>".$this->days[$i]."</td>\n");
}
print("</tr>\n");
print("<tr>\n");
while($dayRow < $firstDay) {
print("<td><!-- This day in prior month --></td>");
$dayRow += 1;
}
while($day < $lastDay) {
if(($dayRow % 7) == 0) {
print("</tr>\n<tr>\n");
}
$adjustedDay = $day+1;
print("<td>");
$this->printHref($adjustedDay);
print("</td>");
$day += 1;
$dayRow += 1;
}
print("\n</tr>\n</table>\n");
}
}
?>
Comments or questions?
PX is running PHP 5.2.11
Thanks to Miranda Productions for hosting and bandwidth.
Use of any code from PX is at your own risk.