Jump to content

PHP Scheduler/Calender - Take 2!


benhullah

Recommended Posts

Hi guys, i'm back with more calender/scheduler woes! Off the back of some very helpful guidance on this forum i resolved the layout issues i was havving dealing with the start of the month (topic: https://forums.phpfreaks.com/topic/306821-php-schedulercalender/).

 

However, now im having problems with the display on two of the 12 months and i cant understand why its happening. If you look at the demo here: http://sgindustries.co.uk/test/test.php?v=month&m=3&y=2018 you can see it displays perfectly for all months apart from April and July when the layout is all screwed up!

 

The only similarities between these months i can see is their first day is a Sunday but why should that balls up the layout so badly?

 

the functionallitly of the thing is still there just its all over the shop on those two months. Any help/suggestions would be greatly appreciated!

 

Code for the calendar/scheduler;

<?php

# calNavigation #
$calMonth=$_GET['m'];
$calYear=$_GET['y'];
$prevMonth=$calMonth-1;
$nextMonth=$calMonth+1;
#################

$month=gmdate("m");	// Find today's month
$day=gmdate("d");     // Finds today's date
$year=gmdate("Y");     // Finds today's year

$no_of_days=gmdate('t',gmmktime(0,0,0,$calMonth,1,$calYear)); // This is to calculate number of days in a month
$mn=gmdate('F',gmmktime(0,0,0,$calMonth,1,$calYear)); // Month is calculated to display at the top of the calendar
$yn=gmdate('Y',gmmktime(0,0,0,$calMonth,1,$calYear)); // Year is calculated to display at the top of the calendar
$j=gmdate('N',gmmktime(0,0,0,$calMonth,1,$calYear)); // This will calculate the week day of the first day of the month

/// top line showing name of the days of the week
echo"<table class='calTable' align='center' valign='top' border='0' cellpadding='5' cellspacing='2'>\n"
."<tr>\n<td align='center' valign='middle' colspan='7' class='calTitle'><span class='prevMonth'><a href='./test.php?v=month&m=$prevMonth&y=$calYear' title='View last months schedule'><< Prev</a></span><span>".$mn." ".$yn."</span><span class='nextMonth'><a href='./test.php?v=month&m=$nextMonth&y=$calYear' title='View next months schedule'>Next >></a></span></td>\n</tr>\n"
."<tr>\n<td colspan='7' height='5'></td>\n</tr>\n"
."<tr>\n<td align='center' valign='middle'><b>Sun</b></td>\n<td align='center' valign='middle'><b>Mon</b></td>\n<td align='center' valign='middle'><b>Tue</b></td>\n<td align='center' valign='middle'><b>Wed</b></td>\n<td align='center' valign='middle'><b>Thu</b></td>\n<td align='center' valign='middle'><b>Fri</b></td>\n<td align='center' valign='middle'><b>Sat</b></td>\n</tr>\n"
."<tr>\n<td colspan='7' height='5'></td>\n</tr>\n"
////// End of the top line showing name of the days of the week//////////

."<tr>\n";

for($k=0, $adj=''; $k<$j; $k++){ $adj .= "<td width='117' height='117' align='left' valign='top'></td>\n"; }

for($i=1;$i<=$no_of_days;$i++){
	
	if($i<10){$i="0".$i."";}
	
		$getevent_sql=@mysql_query("SELECT * FROM schedule WHERE date>='".gmmktime(0,0,0,$calMonth,$i,$calYear)."' AND date<='".gmmktime(23,59,59,$calMonth,$i,$calYear)."' ORDER BY date ASC, title ASC");
		$getevent_num=@mysql_num_rows($getevent_sql);
		$getevent_sql=@mysql_query("SELECT * FROM schedule WHERE date>='".gmmktime(0,0,0,$calMonth,$i,$calYear)."' AND date<='".gmmktime(23,59,59,$calMonth,$i,$calYear)."' ORDER BY date ASC, title ASC LIMIT 0,2");
		$calendardisplay_num=$getevent_num;
			
		echo "$adj<td width='117' height='117' align='left' valign='top' class='calday'><i><a href='./test.php?v=day&d=$i&m=$month&y=$year'>$i</a></i><br />";
		while($eventinfo=@mysql_fetch_array($getevent_sql)) {
			$id=$eventinfo['id'];
			$title=$eventinfo['title'];
		
			echo"<a href='./test.php?view=event&id=$id' title='".$title."'>";
			if (strlen(substr("".str_replace("’", "'", "".$title."")."", 0,12))>=12) { echo"".substr("".str_replace("’", "'", "".$title."")."", 0,12)."..."; } else { echo"".str_replace("’", "'", "".$title."").""; }
			echo"</a><br />";
		}

	if($calendardisplay_num>2) { echo"<a href='./test.php?v=day&d=$i&m=$month&=$year'><i><font class='smalltext'>...more</font></i></a>"; }
	
	echo"</td>\n"; // This will display the date inside the calendar cell
	$adj='';
	$j++;
	if($j==7){
		echo"</tr>\n";
		$j=0;
	}
}

echo"<tr>\n<td height='3' colspan='7'></td>\n</tr>\n</table>\n";

?>
Link to comment
Share on other sites

for($k=0, $adj=''; $k<$j; $k++){

1. $j depends on gmdate's 'N' formatting character. What kinds of values does it produce?

A: $j outputs a number 0-6 for the start day, sunday being 0. it currently outputs 4 as the start of March was a Thursday

2. How does that affect what $k will do?

A: If $k is initialised to 0, and then incremmented by one each time round the for loop until its equal to the start day ($j) then shouldn't it just start the table creation instead of putting in the $adj cell?

Link to comment
Share on other sites

putting a simple IF statement around the $adj code didnt make any difference either;

 

if ($j==0) {
	$adj='';
} else {
	for($k=0, $adj=''; $k<$j; $k++){ $adj .= "<td width='117' height='117' align='left' valign='top'></td>\n"; }
}

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.