У меня есть некоторый php-код, который отображает текущий месяц в формате календаря и содержит несколько навигационных ссылок в верхней части календаря, которые позволяют переходить по месяцам (следующий и предыдущий).
Код ниже - я позаимствовал его из другого источника (это не мой код), и мой разум подвел меня в отношении того, где, извинения или я бы цитировал источник. Это было полезно для меня.
Ошибка, которую я нахожу, заключается в том, что при попытке перейти к году за пределами текущего года (как вперед, так и назад) - мой сайт (который является сайтом WordPress) выдает ошибку «страница не найдена». Я немного сбит с толку, могу ли я попросить помощи у мудрого сообщества здесь, пожалуйста?
if (!isset($_REQUEST['month'])) $_REQUEST['month'] = date('n');
if (!isset($_REQUEST['year'])) $_REQUEST['year'] = date('Y');
$cMonth = $_REQUEST['month'];
$cYear = $_REQUEST['year'];
... more code in between...
$month = strftime('%m', time());
$cur_year = strftime('%Y', time());
$monthNames = Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
$prev_year = $cYear;
$next_year = $cYear;
$prev_month = $cMonth-1;
$next_month = $cMonth+1;
if ($prev_month == 0 ) {
$prev_month = 12;
$prev_year = $cYear - 1;
}
if ($next_month == 13 ) {
$next_month = 1;
$next_year = $cYear + 1;
}
...more code here not really relevant...
echo "<div class='box-a-program'><table class='calendar-direction'><tr>
<td width='33%'><a href='/client-meal-calendar/?month=".$prev_month."&year=".$prev_year."'>Previous</a></td>
<td width='33%'><a href='/client-meal-calendar/?month=".$month."&year=".$cur_year."'>Today</a></td>
<td width='33%'><a href='/client-meal-calendar/?month=".$next_month."&year=".$next_year."'>Next</a></td>
</tr></table>
<table class='calendar'><tr><th colspan='7'><strong>".$monthNames[$cMonth-1]." ".$cYear."</strong></th></tr>
<tr>
<th><strong>S</strong></th>
<th><strong>M</strong></th>
<th><strong>T</strong></th>
<th><strong>W</strong></th>
<th><strong>T</strong></th>
<th><strong>F</strong></th>
<th><strong>S</strong></th>
</tr><tbody>";
$timestamp = mktime(0,0,0,$cMonth,1,$cYear);
$maxday = date('t',$timestamp);
$thismonth = getdate($timestamp);
$startday = $thismonth['wday'];
$today_number = strftime("%e",time());
$today_number = (int)$today_number;
for ($i=0; $i<($maxday+$startday); $i++) {
if ((($i - $startday + 1) == $today_number) && ($cMonth == $month)) {
$wrap = "today";
} else {
$wrap = "nottoday"; }
if(($i % 7) == 0 ) echo "<tr>";
if($i < $startday) {
echo "<td></td>";
} else {
...some more code that does things in here...
echo "<td height='20px' class=".$wrap.">".($i - $startday + 1). ...some code in here for some form work ... </td>";
}
if(($i % 7) == 6 ) echo "</tr>";
}
echo "</tbody></table></div>";
РЕДАКТИРОВАТЬ: Извините, я должен уточнить. Я спрашиваю, может ли кто-нибудь увидеть ошибки в коде, которые могут вызвать проблемы при переходе с декабря текущего года на январь следующего года или с января текущего года на декабрь предыдущего года?