PHP creation of calendars

Submitted by:Jhon Brain

Date added:26 December, 2011

Category:PHP

Allows for the creation of calendars in HTML pages

Tags: create calendar

Code Snippet:

<?    
class pcCalendar
{
var $gaWeekTitles;
function pcCalendar()
{
/* initialise the global variables */
$this->gaWeekTitles[] = "Sunday";
$this->gaWeekTitles[] = "Monday";
$this->gaWeekTitles[] = "Tuesday";
$this->gaWeekTitles[] = "Wednesday";
$this->gaWeekTitles[] = "Thursday";
$this->gaWeekTitles[] = "Friday";
$this->gaWeekTitles[] = "Saturday";
}
function intShowCalendar( $intYear = 0, $intMonth = 0 )
{
/* if month and/or year not set, change to current month and year */
$intMonth = ( $intMonth == 0 ) ? strftime( "%m" ) : $intMonth;
$intYear = ( $intYear == 0 ) ? strftime( "%Y" ) : $intYear;

/* determine total days in month */
$lintTotalDays = 0;
while ( checkdate( $intMonth, $lintTotalDays + 1, $intYear ) )
$lintTotalDays++;

/* build table */
$this->intStartTable();
$this->intStartRow();

for ( $i = 0; $i < 7; $i++ )
$this->intDisplayWeekTitle( $i );

$this->intFinishRow();
$this->intStartRow();

/* ensure that enough blanks are put in so that the first day of the month
lines up with the proper day of the week */
$lintOffset = date( "w", mktime( 0, 0, 0, $intMonth, 1, $intYear ) );
for ( $i = 0; $i < $lintOffset; $i++ )
$this->intDisplayDay( "?" );

/* start filling in the days of the month */
for ( $lintDay = 1; $lintDay <= $lintTotalDays; $lintDay++ )
{
$this->intDisplayDay( $lintDay );

/* terminate row if we're at on the last day of the week */
$lintOffset++;
if ( $lintOffset > 6 )
{
$lintOffset = 0;
$this->intFinishRow;
if ( $lintDay < $lintTotalDays )
$this->intStartRow();
}
}

/* fill in the remainder of the row with spaces */
if ( $lintOffset > 0 )
$lintOffset = 7 - $lintOffset;

for ( $i = 0; $i < $lintOffset; $i++ )
$this->intDisplayDay( "?" );

$this->intFinishRow();
$this->intFinishTable();
}

function intStartTable()
{
/* this function should be overridden with your own routines */
echo '<table border="1" cellpadding="5" cellspacing="5" width="100%">';
}
function intFinishTable()
{
/* this function should be overridden with your own routines */
echo '</table>';
}
function intStartRow()
{
/* this function should be overridden with your own routines */
echo '<tr>';
}
function intFinishRow()
{
/* this function should be overridden with your own routines */
echo '</tr>';
}
function intDisplayWeekTitle( $intWeekDay )
{
/* this function should be overridden with your own routines */
echo '<th><b><font face="Arial">', $this->gaWeekTitles[
$intWeekDay ], '</font></b></th>';
}
function intDisplayDay( $intDay )
{
/* this function should be overridden with your own routines */
echo '<td>', $intDay, '</td>';
}
}
?>
 
 

Comments