Version: 1.0
Type: Full Script
Category: Calendars/Dates
License: Other
Description: This is another simple calendar but listed again because now it includes minimal database support (PostgreSQL). Gives month and day views.
*** Save Script As pgsql.sql And Run To Create Database ***
-- create the database for phpCalendar
-- Run using: psql template1 < pgsql.sql
-- Run as: postgres
CREATE DATABASE calendardb;
\connect calendardb
CREATE TABLE calendar_dates (
calid serial not null primary key,
date_when date,
time_when time,
description text
);
-- Sample INSERT Command
INSERT INTO calendar_dates(date_when,time_when,description)
values(date '2000-12-25', time '09:00:00', 'Christmas');
GRANT SELECT, INSERT, UPDATE ON calendar_dates TO phpuser;
---------------------- Divide Scripts Here ----------------------
*** Save Script As Calendar2.php or change link names within script ***
<?
/* Author: Jason C. Loretz
j_loretz@yahoo.com
Description: A simple calendar with database support.
License: NONE, Except that you include this header.
*/
// Database variables (Adjust to match your database)
$default_dbname="calendardb";
$default_host="127.0.0.1";
$default_port="5432";
$default_user="phpuser";
$default_password="phpuser";
// HTML Color Schemes
$header_bgcolor = "#000000";
$header_txtcolor = "#FFFFFF";
$title_bgcolor = "#000066";
$title_txtcolor = "#FFFFFF";
$text_bgcolor = "#FFFFFF";
$text_txtcolor = "#000000";
$date_bgcolor = "#FFFFFF";
$extra_bgcolor = "#CCCCCC";
$weekend_txtcolor = "#666699";
$table_width = 350;
$column_width = 50;
#######################
## Program Functions ##
#######################
// Connect to the PostgreSQL Database
function connectPGSQL($default_dbname,$default_host,$default_port,$default_user,$default_password) {
$connection = pg_connect("dbname=$default_dbname host=$default_host port=$default_port
user=$default_user password=$default_password");
if (!$connection) {
echo "ERROR: Couldn't open the database.\n";
exit;
} else {
return ($connection);
}
}
// Disconnect from the PostgreSQL Database
function disconnectPGSQL($connection) {
$connection = pg_close($connection);
if (!$connection) {
echo "ERROR: Couldn't close the database connection.\n";
exit;
} else {
return;
}
}
// Generate the month text for the numbers (returns a string)
function genMonth_Text($month) {
switch ($month) {
case 1: $month_text = "January"; break;
case 2: $month_text = "February"; break;
case 3: $month_text = "March"; break;
case 4: $month_text = "April"; break;
case 5: $month_text = "May"; break;
case 6: $month_text = "June"; break;
case 7: $month_text = "July"; break;
case 8: $month_text = "August"; break;
case 9: $month_text = "September"; break;
case 10: $month_text = "October"; break;
case 11: $month_text = "November"; break;
case 12: $month_text = "December"; break;
}
return ($month_text);
}
// Set Today's Month (returns numerical value)
function genSet_Month() {
$month = date(m,time());
return ($month);
}
// Set Today's Year (returns numerical value)
function genSet_Year() {
$year = date(Y,time());
return ($year);
}
// Generate the Stop Value (returns the number of days in the month)
function genSet_Stop($month,$year) {
if ($month == '12') {
$month = 1;
$year++;
} else {
$month++;
}
$stop = mktime(0,0,0,$month,0,$year);
$stop = date(d,$stop);
return ($stop);
}
// Generate the top HTML (returns HTML string)
function genTop_HTML() {
$string = "<html>\n<head>\n\t<title>phpCalendar.php</title>\n</head>\n" .
"<body bgcolor=\"#FFFFFF\" alink=\"#FF0000\" link=\"#000000\" vlink=\"#000000\">\n" .
"<center>\n";
return ($string);
}
// Generate the end HTML (returns HTML string)
function genEnd_HTML() {
$string = "</center>\n" .
"</body>\n</html>";
return ($string);
}
// Generate the table header (returns HTML string)
function genTable_Header($table_width,$header_bgcolor) {
$string = "<table width=\"$table_width\" cellpadding=\"1\" cellspacing=\"0\">" .
"<tr><td bgcolor=\"$header_bgcolor\">\n" .
"<table width=\"$table_width\" cellpadding=\"0\" cellspacing=\"1\">\n";
return ($string);
}
// Generate the table footer (returns HTML string)
function genTable_Footer() {
$data = " Created: " . date(M,time()) . " " . date(j,time()) . ", " . date(Y, time());
$string = "</table></td></tr><tr><td bgcolor=\"#FFFFFF\" align=\"right\">\n" .
"<font face=\"Arial\" color=\"#808080\" size=\"1\">" .
"$data</font></td></tr>\n" .
"</table>\n";
return ($string);
}
// Generates the information to be displayed
function genCalendar_Month($month,$year,$stop,$connection,
$column_width,$extra_bgcolor,$weekend_txtcolor,$date_bgcolor,
$header_bgcolor,$header_txtcolor,
$title_bgcolor, $title_txtcolor) {
if ($month == 12) {
$prev_month = $month - 1;
$prev_year = $year;
$next_month = 1;
$next_year = $year + 1;
} elseif ($month == 1) {
$prev_month = 12;
$prev_year = $year - 1;
$next_month = $month + 1;
$next_year = $year;
} else {
$prev_month = $month - 1;
$prev_year = $year;
$next_month = $month + 1;
$next_year = $year;
}
$start = mktime(0,0,0,$month,1,$year);
$start = date(w,$start);
$month_text = genMonth_Text($month);
$date_string = $month_text . " - " . $year;
$string = "<tr><td colspan=\"1\" bgcolor=\"$header_bgcolor\" align=\"right\" valign=\"center\">\n" .
"<form action=\"Calendar2.php\" method=\"post\">\n" .
"<input type=\"hidden\" name=\"month\" value=\"$prev_month\">\n" .
"<input type=\"hidden\" name=\"year\" value=\"$prev_year\">\n" .
"<input type=\"hidden\" name=\"mode\" value=\"month\">\n" .
"<input type=\"image\" src=\"left.gif\" border=\"0\" width=\"25\" height=\"25\"></form>\n" .
"</td><td colspan=\"5\" bgcolor=\"$header_bgcolor\" align=\"center\">\n" .
"<font color=\"$header_txtcolor\" size=\"3\"><b>$date_string</b></font>\n" .
"</td><td colspan=\"1\" bgcolor=\"$header_bgcolor\" align=\"left\" valign=\"center\">\n" .
"<form action=\"Calendar2.php\" method=\"post\">\n" .
"<input type=\"hidden\" name=\"month\" value=\"$next_month\">\n" .
"<input type=\"hidden\" name=\"year\" value=\"$next_year\">\n" .
"<input type=\"hidden\" name=\"mode\" value=\"month\">\n" .
"<input type=\"image\" src=\"right.gif\" border=\"0\" width=\"25\" height=\"25\"></form>\n" .
"</td></tr>\n" .
"<tr><td width=\"$column_width\" bgcolor=\"$title_bgcolor\" align=\"center\">" .
"<font color=\"$title_txtcolor\">Sun</font></td>\n" .
"<td width=\"$column_width\" bgcolor=\"$title_bgcolor\" align=\"center\">" .
"<font color=\"$title_txtcolor\">Mon</font></td>\n" .
"<td width=\"$column_width\" bgcolor=\"$title_bgcolor\" align=\"center\">" .
"<font color=\"$title_txtcolor\">Tues</font></td>\n" .
"<td width=\"$column_width\" bgcolor=\"$title_bgcolor\" align=\"center\">" .
"<font color=\"$title_txtcolor\">Wed</font></td>\n" .
"<td width=\"$column_width\" bgcolor=\"$title_bgcolor\" align=\"center\">" .
"<font color=\"$title_txtcolor\">Thurs</font></td>\n" .
"<td width=\"$column_width\" bgcolor=\"$title_bgcolor\" align=\"center\">" .
"<font color=\"$title_txtcolor\">Fri</font></td>\n" .
"<td width=\"$column_width\" bgcolor=\"$title_bgcolor\" align=\"center\">" .
"<font color=\"$title_txtcolor\">Sat</font></td></tr>\n";
$string .= "<tr>";
for ($i = 0; $i < $start; $i++) {
$string .= "<td bgcolor=\"$extra_bgcolor\" align=\"center\"> </td>\n";
}
for ($i = 1; $i <= $stop; $i++) {
$day = mktime(0,0,0,$month,$i,$year);
$frame = date(w,$day);
if ($i < 10) {
$number = 0 . $i;
} else {
$number = $i;
}
$field = $year . "-" . $month . "-" . $number;
$calendar = pg_exec($connection, "SELECT * FROM calendar_dates WHERE date_when = '$field'");
$num = pg_numrows($calendar);
if ($num > 0) {
$marker = "<font color=\"#FF0000\">*</font>";
} else {
$marker = "";
}
if ($frame == 6) {
$string .= "<td bgcolor=\"$date_bgcolor\" align=\"center\">" .
"<font color=\"$weekend_txtcolor\">" .
"<a style=\"color: $weekend_txtcolor\" href=\"Calendar2.php?mode=day&mm=$month&dd=$i&yy=$year\">" .
"<b>$i</b></a>$marker</font></td></tr><tr>\n";
} elseif ($frame == 0) {
$string .= "<td bgcolor=\"$date_bgcolor\" align=\"center\">" .
"<font color=\"$weekend_color\">" .
"<a style=\"color: $weekend_txtcolor\" href=\"Calendar2.php?mode=day&mm=$month&dd=$i&yy=$year\">" .
"<b>$i</b></a>$marker</td>\n";
} else {
$string .= "<td bgcolor=\"$date_bgcolor\" align=\"center\">" .
"<a href=\"Calendar2.php?mode=day&mm=$month&dd=$i&yy=$year\">" .
"<b>$i</b></a>$marker</td>\n";
}
}
for ($i = 1; $frame < 6; $frame++) {
$string .= "<td bgcolor=\"$extra_bgcolor\" align=\"center\"> </td>\n";
}
if ($frame < 6) { $string .= "</tr>\n"; }
return ($string);
}
// Generate the day calendar (returns HTML string)
function genCalendar_Day($mm,$dd,$yy,$connection,
$header_bgcolor,$header_txtcolor,
$title_bgcolor,$title_txtcolor,
$text_bgcolor,$text_txtcolor) {
$month_text = genMonth_Text($mm);
$date_string = $month_text . " " . $dd . ", " . $yy;
$temp = $dd - 1;
$temp2 = mktime(0,0,0,$mm,$temp,$yy);
$prev_month = date(m,$temp2);
$prev_day = date(j,$temp2);
$prev_year = date(Y,$temp2);
$temp = $dd + 1;
$temp2 = mktime(0,0,0,$mm,$temp,$yy);
$next_month = date(m,$temp2);
$next_day = date(j,$temp2);
$next_year = date(Y,$temp2);
$today = mktime(0,0,0,$mm,$dd,$yy);
$day_string = date(l,$today) . ", " . date(F,$today) . " " . date(j,$today) . ", " . date(Y,$today);
$string = "<tr><td colspan=\"3\" bgcolor=\"$title_bgcolor\" align=\"center\">\n" .
"<font color=\"$title_txtcolor\"><b>$day_string</b></font>\n" .
"</td></tr>\n<tr><td colspan=\"3\" bgcolor=\"$text_bgcolor\" align=\"left\">\n";
$field = $yy . "-" . $mm . "-" . $dd;
$calendar = pg_exec($connection, "SELECT * FROM calendar_dates WHERE date_when = '$field' ORDER BY time_when");
$num = pg_numrows($calendar);
if ($num == 0) {
$app1 = " No Appointments For Today!<br><br>\n";
} else {
$app1 = " ";
for ($i = 0; $i < $num; $i++) {
$arr = pg_fetch_row($calendar, $i);
$app1 .= substr($arr[2],0,5) . " -- " . $arr[3];
$app1 .= "<br>\n ";
}
$app1 .= "<br>\n";
}
$string .= "<br>" .
"<font face=\"Arial\" size=\"3\">" .
"<b> Today's Appointment's:</b></font><br>\n" .
$app1 .
"<br>";
$string .= "</td></tr>\n" .
"<tr><td colspan=\"3\" bgcolor=\"$text_bgcolor\" align=\"center\">\n" .
"<font face=\"Arial\" size=\"1\">\n" .
"<a href=\"Calendar2.php?mode=month&month=$mm&year=$yy\">(Back To Month View)</a>" .
"</font></td></tr>\n" .
"<tr><td width=\"$column_width\" bgcolor=\"$header_bgcolor\" align=\"right\">" .
"<a href=\"Calendar2.php?mode=day&mm=$prev_month&dd=$prev_day&yy=$prev_year\">".
"<img src=\"left.gif\" border=\"0\" width=\"25\" height=\"25\"></a>" .
"</td><td bgcolor=\"$header_bgcolor\" align=\"center\"><font color=\"$header_txtcolor\">" .
"$date_string</font>" .
"</td><td width=\"$column_width\" bgcolor=\"$header_bgcolor\" align=\"left\">" .
"<a href=\"Calendar2.php?mode=day&mm=$next_month&dd=$next_day&yy=$next_year\">" .
"<img src=\"right.gif\" border=\"0\" width=\"25\" height=\"25\"></a>" .
"</td></tr>";
return ($string);
}
######################
## Script Execution ##
######################
$connection = connectPGSQL($default_dbname,$default_host,$default_port,$default_user,$default_password);
print $top_html = genTop_HTML();
print $top_html = genTable_Header($table_width,$header_bgcolor);
if (!$mode) { $mode = "month"; }
if ($mode == "month") {
if (!$month) {
$month = genSet_Month();
$year = genSet_Year();
}
$day_number = genSet_Stop($month,$year);
print $mid_html = genCalendar_Month($month,$year,$day_number,$connection,
$column_width,$extra_bgcolor,
$weekend_txtcolor,$date_bgcolor,
$header_bgcolor,$header_txtcolor,
$title_bgcolor,$title_txtcolor);
} elseif ($mode == "day") {
print $mid_html = genCalendar_Day($mm,$dd,$yy,$connection,
$header_bgcolor,$header_txtcolor,
$title_bgcolor,$title_txtcolor,
$text_bgcolor,$text_txtcolor);
}
print $end_html = genTable_Footer();
print $end_html = genEnd_HTML();
disconnectPGSQL($connection);
?>