Thanks Ben,
this shows my calendar and with it the events. However if we have more then one event a day it doesn't work:
<?php
print "<link rel='stylesheet' href='style/cal.css' type='text/css'>";
error_reporting('0');
ini_set('display_errors', '0');
// Gather variables from
// user input and break them
// down for usage in our script
if(!isset($REQUEST['date'])){
$date = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
} else {
$date = $REQUEST['date'];
}
$day = date('d', $date);
$month = date('m', $date);
$year = date('Y', $date);
// Get the first day of the month
$month_start = mktime(0, 0, 0, $month, 1, $year);
// Get friendly month name
$month_name = date('M', $month_start);
// Figure out which day of the week
// the month starts on.
$month_start_day = date('D', $month_start);
switch($month_start_day){
case "Sun": $offset = 0; break;
case "Mon": $offset = 1; break;
case "Tue": $offset = 2; break;
case "Wed": $offset = 3; break;
case "Thu": $offset = 4; break;
case "Fri": $offset = 5; break;
case "Sat": $offset = 6; break;
}
// determine how many days are in the last month.
if($month == 1){
$num_days_last = cal_days_in_month(0, 12, ($year -1));
} else {
$num_days_last = cal_days_in_month(0, ($month -1), $year);
}
// determine how many days are in the current month.
$num_days_current = cal_days_in_month(0, $month, $year);
// Build an array for the current days
// in the month
for($i = 1; $i <= $num_days_current; $i++){
$num_days_array[] = $i;
}
// Build an array for the number of days
// in last month
for($i = 1; $i <= $num_days_last; $i++){
$num_days_last_array[] = $i;
}
// If the $offset from the starting day of the
// week happens to be Sunday, $offset would be 0,
// so don't need an offset correction.
if($offset > 0){
$offset_correction = array_slice($num_days_last_array, -$offset, $offset);
$new_count = array_merge($offset_correction, $num_days_array);
$offset_count = count($offset_correction);
}
// The else statement is to prevent building the $offset array.
else {
$offset_count = 0;
$new_count = $num_days_array;
}
// count how many days we have with the two
// previous arrays merged together
$current_num = count($new_count);
// Since we will have 5 HTML table rows (TR)
// with 7 table data entries (TD)
// we need to fill in 35 TDs
// so, we will have to figure out
// how many days to appened to the end
// of the final array to make it 35 days.
if($current_num > 35){
$num_weeks = 6;
$outset = (42 - $current_num);
} elseif($current_num < 35){
$num_weeks = 5;
$outset = (35 - $current_num);
}
if($current_num == 35){
$num_weeks = 5;
$outset = 0;
}
// Outset Correction
for($i = 1; $i <= $outset; $i++){
$new_count[] = $i;
}
// Now let's "chunk" the $all_days array
// into weeks. Each week has 7 days
// so we will array_chunk it into 7 days.
$weeks = array_chunk($new_count, 7);
// Build Previous and Next Links
$previous_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=";
if($month == 1){
$previous_link .= mktime(0, 0, 0, 12, $day, ($year -1));
} else {
$previous_link .= mktime(0, 0, 0, ($month -1), $day, $year);
}
$previous_link .= "\"><< Prev</a>";
$next_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=";
if($month == 12){
$next_link .= mktime(0, 0, 0, 1, $day, ($year + 1));
} else {
$next_link .= mktime(0, 0, 0, ($month +1), $day, $year);
}
$next_link .= "\">Next >></a>";
// Build the heading portion of the calendar table
echo "<table class=\"maintable\">\n".
"<tr class='headline'>\n".
"<td colspan=\"7\">\n".
"<table align=\"center\">\n".
"<tr class='headline'>\n".
"<td colspan=\"2\" width=\"125\" align=\"left\">$previous_link</td>\n".
"<td colspan=\"3\" width=\"150\" align=\"center\">$month_name $year</td>\n".
"<td colspan=\"2\" width=\"75\" align=\"right\">$next_link</td>\n".
"</tr>\n".
"</table>\n".
"</td>\n".
"<tr class='mainrow'>\n".
"<td>S</td><td>M</td><td>T</td><td>W</td><td>T</td><td>F</td><td>S</td>\n".
"</tr>\n";
// Now we break each key of the array
// into a week and create a new table row for each
// week with the days of that week in the table data
$i = 0;
while (list(, $week) = each($weeks))
{
echo "<tr class='mainrow'>\n";
while (list(, $d) = each($week)){
if($i < $offset_count){ // cells in the row which have no date
echo "<td class=\"nonmonthdays\">$day_link</font></td>\n";
}
if(($i >= $offset_count) && ($i < ($num_weeks * 7) - $outset)){
$datecount=mktime(0, 0, 0, $month -1, $d, $year);
$short = '';
$day_link = "<A href=\"javascript:popWin('editcalendar.php?ID=$datecount', 450, 620)\">$d<br><br><br><br></a>";
$query = "SELECT * FROM bl_calender WHERE viewable<>'0'";
$r = mysql_query ($query) or die ("Query error: ".mysql_error());
while($row=mysql_fetch_array($r)) {//Array of records stored in $row
if($row['dateclass']==$datecount) {
$short = $row['short'];
$short_wrapped = wordwrap( $short, 15,"\n" );
$event = $row['type'];
$day_link = "<A href=\"javascript:popWin('editcalendar.php?ID=$datecount', 450, 620)\" title=\"$short\"><b>$d</b><br><font color='black'>$short_wrapped</font></a>";} // show the dates with an event with yellow background
}
$this_month = date('M');
// if $date == date of today
if($date == mktime(0, 0, 0, $month, $d, $year)){
// make date red if it is current month
if($this_month == $month_name) {
if (strpos($day_link, $short_wrapped) <> 0) {
echo "<td class='$event'>$day_link</td>\n";
} else {
echo "<td><A href=\"javascript:popWin('editcalendar.php?ID=$datecount', 450, 620)\" title=\"$short\">
<font color='red'><b>$d</b><br><br><br><br></font></a></td>\n";
}
}
else {
if (strpos($day_link, $short_wrapped) <> 0) {
echo "<td class='$event'>$day_link</td>\n";
} else {
echo "<td><A href=\"javascript:popWin('editcalendar.php?ID=$datecount', 450, 620)\" title=\"$short\"><font style='color:#0066FF'>$d<br><br><br><br></font></a></td>\n"; }
}
}
else { // if $date <> date of today
// if there is an event make background yellow
if (strpos($day_link, $short_wrapped) <> 0) {
echo "<td class='$event'>$day_link</td>\n";
} else { echo "<td class=\"days\">$day_link</td>\n"; }
}
} elseif(($outset > 0)) {
if(($i >= ($num_weeks * 7) - $outset)){
$day_link = "";
echo "<td class=\"nonmonthdays\">$day_link</td>\n";
}
}
$i++;
}
echo "</tr>\n";
}
// Close out your table and that's it!
echo "<tr class='headline'><td colspan='7' class='days'> </td></tr>";
echo '</table>';
?>
<SCRIPT LANGUAGE="Javascript">
//<!--
// pop a windoid (Pictures)
function popWin(url, w, h)
{
var madURL = url;
var x, y, winStr;
x=0; y=0;
self.name="opener";
winStr = "height="+h+", width="+w+", screenX="+x+", left="+x+", screenY="+y+", top="+y+", channelmode=0, dependent=0, directories=0, fullscreen=0, location=0, menubar=0, resizable=1, scrollbars=0, status=0, toolbar=0";
lilBaby = window.open(madURL, "_blank", winStr);
}
//--> </script>