Календарь на странице метания php не найден при смене года - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть некоторый 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>";

РЕДАКТИРОВАТЬ: Извините, я должен уточнить. Я спрашиваю, может ли кто-нибудь увидеть ошибки в коде, которые могут вызвать проблемы при переходе с декабря текущего года на январь следующего года или с января текущего года на декабрь предыдущего года?

1 Ответ

0 голосов
/ 07 ноября 2018

Я глупый Билли. Это была почти та же самая проблема, поставленная здесь

Ответ заключается в изменении переменных, используемых в $ _GET, а затем в коде. месяц и год являются зарезервированными именами.

... трюк для непосвященных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...