Dear Coders,
I am currently having a little bit of trouble with my following calendar code. I can move forwards and backwards with my calendar between different months which works fine "unless" you go back one month to august then attempt to go back to september it doesn't work. I can not seem to find the problem if anyone here can assist me on this issue I would appreciate the help.
This code actually creates the calendar:
function build_calendar($month, $year, $dateArray) {
// Create array containing abbreviations of days of week.
$daysOfWeek = array('Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa');
// What is the first day of the month in question?
$firstDayOfMonth = mktime(0, 0, 0, $month, 1, $year);
// How many days does this month contain?
$numberDays = date('t', $firstDayOfMonth);
// Retrieve some information about the first day of the
// month in question.
$dateComponents = getdate($firstDayOfMonth);
// What is the name of the month in question?
$monthName = $dateComponents['month'];
// What is the index value (0-6) of the first day of the
// month in question.
$dayOfWeek = $dateComponents['wday'];
// Create the table tag opener and day headers
$calendar = "<table class='calendar' align='center'>";
$calendar .= "<caption><a href=?date=back><</a> $monthName, $year <a href=?date=up>></a></caption>";
$calendar .= "<tr>";
// Create the calendar headers
foreach($daysOfWeek as $day) {
$calendar .= "<th class='header'>$day</th>";
}
// Create the rest of the calendar
// Initiate the day counter, starting with the 1st.
$currentDay = 1;
$calendar .= "</tr><tr>";
// The variable $dayOfWeek is used to
// ensure that the calendar
// display consists of exactly 7 columns.
if ($dayOfWeek > 0) {
$calendar .= "<td colspan='$dayOfWeek'> </td>";
} while ($currentDay <= $numberDays) {
// Seventh column (Saturday) reached. Start a new row.
if ($dayOfWeek == 7) {
$dayOfWeek = 0;
$calendar .= "</tr><tr>";
}
// Is the $currentDay a member of $dateArray? If so,
// the day should be linked.
if (in_array($currentDay, $dateArray)) {
$date = "$year-$month-$currentDay";
$calendar .= "<td class='linkedday'>
<a href='blogs.php?date=$date'
class='calendarlink'>$currentDay</a></td>";
// $currentDay is not a member of $dateArray.
} else {
$calendar .= "<td class='day'>$currentDay</td>";
}
// Increment counters
$currentDay++;
$dayOfWeek++;
}
// Complete the row of the last week in month, if necessary
if ($dayOfWeek != 7) {
$remainingDays = 7 - $dayOfWeek;
$calendar .= "<td colspan='$remainingDays'> </td>";
}
$calendar .= "</table>";
return $calendar;
}
This function actually displays the calendar.
// Displays the calendar if criteria are met
function display_calendar() {
session_start();
if (isset($_SESSION["authorized"])) {
$conn = mysql_connect("localhost", "root", "") or die("Unable to connect to database. " . mysql_error());
$db = mysql_select_db("test");
$dateComponents = getdate();
$date = $_GET["date"];
$year = $dateComponents['year'];
if($date == "up"){
session_start();
$date = $_SESSION["date"] + 1;
$month = $dateComponents['mon'] + $date;
$_SESSION["date"] = $date;
} else if($date == "back"){
session_start();
$date = $_SESSION["date"] - 1;
$month = $dateComponents['mon'] + $date;
$_SESSION["date"] = $date;
} else {
$month = $dateCompenents['mon'];
}
$mydate = $dateComponents['Y-$month'];
$query = "SELECT $mydate as EntryDate FROM MTS";
while ($row = mysql_fetch_array($result)) {
$dateArray[] = $row['EntryDate'];
}
echo build_calendar($month, $year, $dateArray);
if (isset ($_GET['date'])) {
$date = $_GET['date'];
} else {
$date = date("Y-m-d");
}
}
}
Another thing that I wanted to do with this calendar which I don't believe I have it setup properly yet and I am unsure of how to accomplish this. I would like to make each day a link if there is data in my database for that day. If there are any suggestions on how to accomplish that I would appreciate. My main issue though is stated above.