По сути, я хочу, чтобы календарь менялся месяцами, нажимая одну из стрелок.Я чувствую, что где-то есть простая ошибка, и я просто пропускаю ее.Просто дайте мне знать, если мне нужно что-то объяснить.
calendar.php:
<?php
function calendar($selectedDate = "now") {
$selectedDate = strtotime($selectedDate);
$theFirst = strtotime(date('m/01/Y', $selectedDate));
$weekDayOfTheFirst = (int) date('w', $theFirst);
$lastDayOfTheMonth = (int) date('j', strtotime('-1 day', strtotime('+1 month', $theFirst)));
$numberOfWeeks = ceil(($weekDayOfTheFirst + $lastDayOfTheMonth) / 7);
$selectedMonth = (int) date('m', $selectedDate);
echo "<table id=\"calendar\"><tr><td onclick=\"updateCalendar('";
echo date("F", strtotime('-1 month', $selectedDate)) . "', '" . date("Y", strtotime('-1 month', $selectedDate));
echo "')\"><a href=\"#\"><</a></td><th colspan=\"5\">" . date("F 'y", $selectedDate) . "</th><td onclick=\"updateCalendar('";
echo date("F", strtotime('+1 month', $selectedDate)) . "', '" . date("Y", strtotime('+1 month', $selectedDate));
echo "><a href=\"#\">></a></td></tr>";
echo "<tr><th>S</th><th>M</th><th>T</th><th>W</th><th>R</th><th>F</th><th>S</th></tr>";
for ($week = 0; $week < $numberOfWeeks; $week++) {
echo "<tr>";
for ($dayOfTheWeek = 0; $dayOfTheWeek <= 6; $dayOfTheWeek++) {
$date = strtotime($dayOfTheWeek + $week * 7 - $weekDayOfTheFirst . 'days', $theFirst);
$dayOfTheMonth = (int) date('j', $date);
echo "<td" . (date('m/Y', $date) == date('m/Y', $selectedDate) ? "" : " class=\"outOfMonth\"");
echo ($date == $selectedDate ? " id=\"today\"" : "") . "><a href=\"#\">" . $dayOfTheMonth . "</a></td>";
}
echo "</tr>";
}
echo "</table>\n";
}
echo "<div>" . $_GET["month"] . "</div><div>" . $_GET["year"] . "</div>";
if (isset($_GET["month"]) && isset($_GET["year"])) {
echo "<div>GET</div>";
calendar($_GET["month"] . ' ' . $_GET["year"]);
} else {
echo "<div>not GET</div>";
calendar();
}
?>
calendar.js:
function updateCalendar(month, year) {
var xmlhttp;
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("sideBar").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "/home2/crompton/scripts/calendar.php?month=" + month + "&year=" + year, true);
xmlhttp.send();
}