Jump to content

Recommended Posts

I have a calendar that I would like to display some events on.  The events are stored in a database but I do not think I am getting the information in the right place and displaying like it should be.

 

I cannot seem to get an event to display on the exact date that it should be displayed on.  I can get one event for a whole week but that, of course, is not right.

 

Any help would be appreciated,

 

Dan

 

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");


$selectquery=mysql_query ("
SELECT `p`.`id` as id
, `p`.`hostname` as hostname
, `p`.`partydate` as partydate
, `p`.`partytime` as partytime
, COUNT( `g`.`id` ) AS numofguests
FROM parties AS p LEFT JOIN guests AS g
ON `p`.`id` = `g`.`host_id`
WHERE partydate > NOW( )
GROUP BY `p`.`id`");

$num = mysql_num_rows($selectquery);


?>

<?php
error_reporting('0');
ini_set('display_errors', '0');

//gather variables from the user and break them down for this 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 the friendly month name
$month_name = date('M', $month_start);

//Find first day of the week the month starts
$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 previous month
if($month == 1) {
$num_days_last = cal_days_in_month(0, 12, ($year - 1));
} else {
$num_days_last = cal_days_in_month(1, ($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 of the days
for($i = 1; $i <= $num_days_current; $i++) {
$num_days_array[] = $i;
}

//build an array from the last months days
for($i = 1; $i <= $num_days_last; $i++) {
$num_days_last_array[] = $i;
}

//check the offset for day of the week, none is needed if month starts on Sunday
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);	
} else {
$new_count = $num_days_array;
}

//count how many total days we have with these two arrays merged
$current_num = count($new_count);

//With 5 HTML table rows with 7 table data entries we will need a total
//of 35 TDs.  We will need to see from a third array how many days we need

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;
}

//separate the $new_count array into 7 day weeks
$weeks = array_chunk($new_count, 7);

$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>";



?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

<link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css">



</head>

<boby>
<div id="wrapper">
<div id="navigation">
		<div id="menuh-container">

		<div id="menuh">
			<!--<ul>
				<li><a href="index.html">Home</a></li>
			</ul>-->
			<ul>	
				<li><a href="about.html">About Us</a></li>
			</ul>

			<ul>
				<li><!--<a href="products.html" class="top_parent">Products</a>--><a href="#" class="top_parent">Products</a>
				<ul>
					<li><a href="clothes.html">Kids' Clothing</a></li>
					<li><a href="gifts.html">Baby Gifts & <br />Accesories</a></li>

				</ul>
				</li>
			</ul>



			<ul>	
				<li><a href="schedule.php">Calendar</a></li>
			</ul>

			<ul>	
				<li><a href="contact_us.html">Contact Us</a></li>
			</ul>


		</div> 	<!-- end the menuh-container div -->  
		</div><!-- end the menuh div --> 

</div><!-- end navigation --> 

<div id="content">
<?php
echo "<table border=\"1\" cellpadding=\"2\" cellspacing=\"0\" width=\"520\" class=\"calendar\">\n".
		"<tr>\n".
		"<td colspan=\"7\">".
		"<table align=\"center\">".
		"<tr>".
		"<td colspan=\"2\" width=\"150\" align=\"left\">$previous_link</td>\n".
		"<td colspan=\"3\" width=\"200\" align=\"center\">$month_name $year</td>\n".
		"<td colspan=\"2\" width=\"150\" align=\"right\"$next_link</td>\n".
		"</tr>\n".
		"</table>\n".
		"</td>\n".
		"<tr>\n".
		"<td>Sun</td><td>Mon</td><td>Tue</td><td>Wed</td><td>Thu</td><td>Fri</td><td>Sat</td>\n".
		"</tr>\n";

//Break each key of the array into a week and create a new table row for each week
//with the days of the week in the table data

$i = 0;


foreach($weeks AS $week) {

	echo "<tr>\n";


		while ($row = mysql_fetch_array($selectquery)) {

					$party_host_id = $row['id'];
					$party_host_name = $row['hostname'];
					$party_calendar_entry = strtotime($row['partydate']);


			if($party_calendar_entry == $date) {

				$host_link = "<a href=\"party_sign_up.php?id=".$party_host_id."\">".$party_host_name."</a>";
				//echo "td class=\"days\">$host_link</td>\n";
			}//if $party_calendar_entry=$date	


		}//while	
			foreach($week as $d) {

				if($i < $offset_count) {
					$day_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=".mktime(0,0,0,($month - 1),$d,$year)."\">$d</a>";
					echo "<td class=\"nonmonthdays\">$day_link.$host_link</td>\n";
				}

				if(($i >= $offset_count) && ($i < ($num_weeks * 7) - $outset)) {
					if($date == mktime(0,0,0,$month, $d, $year)) {
						echo "<td class=\"today\">$d</td>\n";
					} else {
						echo "<td class=\"days\"><a href=\"".$_SERVER['PHP_SELF']."?date=".mktime(0,0,0,$month,$d,$year)."\">$d</a></td>\n";
					}

				} elseif($i >= ($num_weeks * 7) - $outset) {
					$day_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=".mktime(0,0,0,$month + 1,$d,$year)."\">$d</a>";
					echo "<td class=\"nonmonthdays\">$day_link.$host_link</td>\n";
				}

			}//foreach $week as $d


			$i++;




		echo "</tr>\n";

}//foreach $weeks as $week

echo '<tr><td colspan="7" class="days"> </td></tr>';
echo '</table>';




?>




</div><!--end content-->
</div><!--end wrapper-->
</body>

</html>

Link to comment
https://forums.phpfreaks.com/topic/72317-displaying-events-in-a-calendar/
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.