<html>
<head>
<title>Calendar</title>
<body>
<form action="cal_new1.php" method="post">
<h3>Please select month or year:</h3>
<select name="month">
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">June</option>
<option value="7">July</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
/
<select name="year">
<option value="2006">2006</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="2009">2009</option>
<option value="2010">2010</option>
</select>
<input type="submit" value="Display Calendar" />
<?php
$db = mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("bulletin", $db) or die(mysql_error());
//generate event calendar
echo createcal($month, $year);
if (isset($_POST['d']))
{
echo "kjkljlk";
$d = $_POST['d'];
echo "d=".$d;
}
else
{
echo "183439";
$d = date("Y-n-j");
echo "d=".$d;
}
//show news and events
$show = "SELECT * FROM `bul_data` WHERE `DATE` LIKE '$d 22:36:40'";
echo "show=".$show;
$showres = mysql_query($show) or die(mysql_error());
if(mysql_num_rows($showres)>0)
{
while ($showrow = mysql_fetch_assoc($showres))
{
$day = $showrow['DATE'];
$title = $showrow['TITLE'];
$department = $showrow['DEPARTMENT'];
$campus = $showrow['CAMPUS'];
$link = $showrow['LINK'];
echo "<p>$day</p>\n";
echo "<p>$title</p>\n";
echo "<p>$department</p>\n";
echo "<p>$campus</p>\n";
echo "<p><a href=\"$link\">$link</a></p>\n";
}
}
else
{
echo "<p>No news available</p>";
}
function createcal($month, $year)
{
$month = "";
$year = "";
//get year & month from the calendar
if (isset($_POST['month']) && isset($_POST['year']))
{
$month = $_POST['month'];
echo "post_month=".$month;
$year = $_POST['year'];
echo "post_year=".$year;
}
else
{
$components = getdate();
$month = $components['mon'];
$year = $components['year'];
}
echo "month=".$month;
echo "year=".$year;
$output = "<h1>Bulletins for $month / $year</h1>";
//create event days
$newsquery = "SELECT `DATE` FROM `bul_data`";
echo "newsquery=".$newsquery;
$newsres = mysql_query($newsquery) or die(mysql_error());
$eventday = array();
if(mysql_num_rows($newsres)>0)
{
while ($newsrow = mysql_fetch_assoc($newsres))
{
$date = $newsrow['DATE'];
echo "date=".$date;
$eventday[] = $date;
echo "eventday=".$eventday;
}
}
//create table tag opener and day headers
$output .="<table border=\"1\">\n";
$output .="<tr>";
$days = array("SUN","MON","TUE","WED","THU","FRI","SAT");
foreach($days as $day)
{
//create calendar headers
$output .="<th><b>$day</th>\n";
}
$output .="</tr>";
//get 1st day of month
$start = mktime(0,0,0,$month,1,$year);
echo "start=".$start;
$thisdate = getdate($start);
$firstweekday = $thisdate['wday'];
echo "firstweekday=".$firstweekday;
//calculate number of days in the current month
$maxday = date('t', $start);
echo "maxday=".$maxday;
//$next_month = getDate(mktime(0, 0, 0, $month + 1, 1, $year));
//echo "next_month=".$next_month;
$output .="<tr>";
//align first week of month
for($cday = 0; $cday < $firstweekday; $cday++)
{
$output .="<td> </td>\n";
}
//display days of remaining weeks
for($counter = 1; $counter <= $maxday; $counter++)
{
$firstweekday %= 7;
$ripdate = "$year-$month-$counter 22:36:40";
echo "ripdate=".$ripdate;
$d = $year."-".$month."-".$counter;
echo "d=".$d;
//construct new row if 7th column is reached
if($firstweekday == 0)
{
//$firstweekday =0;
$output .="</tr><tr>";
echo "skjsksl";
if (in_array($ripdate, $eventday))
{
echo "2iuwiruo";
$output .="<td class=\"post\"><a href=\"news.php?$year-$month-
$counter\">$counter</a>";
$output .="<input name=\"d\" type=\"text\" type=\"hidden\" value=
\".$d.\"></td>\n";
}
else
{
echo "qoiwwo";
$output .="<td class=\"empty\">$counter</td>\n";
}
}
//not yet reach last column, continue to display
else
{
if (in_array($ripdate, $eventday))
{
echo "sqpoipo";
$output .="<td class=\"post\"><a href=\"news.php?$year-$month-
$counter\">$counter</a>";
$output .= "<input name=\"d\" type=\"text\" type=\"hidden\" value=
\".$d.\"></td>\n";
}
else
{
echo "$%%^^&**@";
$output .="<td class=\"empty\">$counter</td>\n";
}
}
$firstweekday++;
echo "counter=".$counter;
}
//$restday = getdate(mktime(0, 0, 0, $month, $maxday, $year));
//for ($cday = $restday+1; $cday < 7; $cday++)
//{
// $output .="<td> </td>";
//}
$output .="</tr>";
$output .="</table>";
$output .="</form>";
return $output;
}
?>
</body>
</html>
GENERAL HINT #1:
var_dump($_REQUEST);
do that sometimes to check if post&get-variables are received in a way you
thought they are.
GENERAL HINT #2;
concanate sql query parts into one string and print that instead of
excetuting. copy then it from the screen and use phpmyadmin to check what
query really returns or is it valid syntax at all.
Does it need the proper assignment of d array? i.e. d[], or
d[$counter] ? I've changed 'd' for either case of d[] and
d[$counter], but it is still doesn't work though.
$currentday = $components['mday'];
if($currentday == $counter)
$rip_currentday = "$year-$month-$currentday 22:36:40";
//construct new row if 7th column is reached
if($firstweekday == 0)
{
//$firstweekday =0;
$output .="</tr><tr>";
echo "skjsksl";
if (in_array($ripdate, $eventday))
{
if (in_array($rip_currentday, $eventday) && $currentday ==
$counter)
{
echo "today";
$output .="<td class=\"today\"><a href=\"viewnews.php?d=$year-
$month-$counter\" target=\"_blank\">$counter</a>";
$output .="<input name=\"d\" type=\"text\" type=\"hidden\" value=
\".$d.\"></td>\n";
}
else
{
echo "2iuwiruo";
$output .="<td class=\"event\"><a href=\"viewnews.php?d=$year-
$month-$counter\" target=\"_blank\">$counter</a>";
$output .="<input name=\"d\" type=\"text\" type=\"hidden\" value=
\".$d.\"></td>\n";
}
}
else
{
if ($currentday == $counter)
{
echo "else_today";
$output .="<td class=\"today\">$counter</td>\n";
}
else
{
echo "qoiwwo";
$output .="<td>$counter</td>\n";
}
}
}
I hope to get current day displayed althought the $_POST['month']) and
$_POST['year'] are "isset". I inserted the $currentday =
$components['mday']; in the isset loop, but it appears to have the
similar number shaded with different color whenever I change to next
month or previous month. Can anybody help?