Link to home
Start Free TrialLog in
Avatar of Mark
Mark

asked on

Create daily calendar with PHP/HTML/CSS

I created a day by day calendar broken down in 15 minute increments throughout the day ... now I need to figure out how to property populate the calendar for the events (so for example if an event is 2 hours from 9am to 11am that it is shown properly across the respective rows ....

Here's what I have so far:
<?php

require('library.php');

$start_time = '8:00 AM';
$end_time = '10:00 PM';
$minutes_breakage = '15';

$day = getvar('day');
if(strlen($day)<1) $day = date('m/d/Y');
else { $day = date('m/d/Y', strtotime($day)); }

$inc   = $minutes_breakage * 60;
$start = (strtotime($start_time)); // 6  AM
$end   = (strtotime($end_time)); // 10 PM

echo "<h3>Day: $day</h3>";

echo <<< HTML
<style>
/* TEST */
.id_33__08_00_AM {
	background-color: green;
}
</style>
HTML;

echo '<table border=1 cellspacing=0><tr><td>Time</td>';
	
foreach (getrows("SELECT * FROM users WHERE type='Agent' AND active='Yes'") AS $row) {
	echo "<td>{$row['full_name']}</td>";
	$usercols .= "<td class='id_{$row['user_id']}__[TIMESTART]'></td>";
}

echo '</tr>';

for( $i = $start; $i <= $end; $i += $inc ) {
    #$range = date( 'g:i', $i ) . ' - ' . date( 'g:i A', $i + $inc );
	$show = date( 'g:i A', $i );
	$csstime = date('h_i_A', $i);
	$myusercols = str_replace('[TIMESTART]', $csstime, $usercols);
	echo "<tr><td>$show</td>$myusercols</tr>";
}
echo '</table>';


?>

Open in new window


I was playing around with CSS but apparently you cannot do rowspans with it and if I define a rowspan on a td say beginning at 9AM, I need to make sure a <td> tag does not appear anywhere where the rowspan is supposed to span across. I need an example of the best way of structuring the php code to properly populate the daily calendar with events that span across the events hours.. (I know how to pull it from MySQL/etc but I need to know how to output it so it appears properly)
ASKER CERTIFIED SOLUTION
Avatar of Ray Paseur
Ray Paseur
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Mark
Mark

ASKER

I figured it out...

$minutesinappt = getcol("SELECT TIMESTAMPDIFF(MINUTE,`start_time`,`end_time`) FROM appointments WHERE id='{$appointment['id']}' AND cancelled != 1");
$cycles = $minutesinappt/$minutes_breakage;
		
		if($cycles==1) {
			echo "<td>Appointment With {$appointment['client']}</td>";
		}
		
		else if(!isset($appointmentrowsleft[$apptid])) {
			$appointmentrowsleft[$apptid] = 1;
			echo "<td rowspan='$cycles'>Appointment With {$appointment['client']}</td>";
		}
		......

Open in new window