У меня есть код выше с сайта.com. Все работает хорошо, за исключением августа 2015 года. Дата начала должна быть в субботу, но календарь показывает понедельник вместо этого. Другие месяцы, которые я проверил до сих пор, верны.PHP Календарь с неправильной датой начала августа 2015 года
Подсказка?
<?php
function calendar() {
date_default_timezone_set('UTC');
$date = time(); // it was removed orginally.
if (ISSET($_REQUEST['emonth'])&& ISSET($_REQUEST['eyear'])){
$month = $_REQUEST['emonth'];
$year = $_REQUEST['eyear'];
} else {
$month = date('m', $date);
$year = date('Y', $date);
}
$first_day = mktime(0,0,0,$month, 1, $year);
echo date('D', $first_day);
$title = date('F', $first_day);
$day_of_week = date('D', $first_day);
switch($day_of_week){
case "Sun": $blank = 0; break;
case "Mon": $blank = 1; break;
case "Tue": $blank = 2; break;
case "Wed": $blank = 3; break;
case "Thu": $blank = 4; break;
case "Fri": $blank = 5; break;
case "Sar": $blank = 6; break;
}
$days_in_month = cal_days_in_month(0, $month, $year);
echo '<table class="event">
<tr>
<td colspan="7">'.$title.'-'.$year.'</td>
</tr><tr>
<th>Sun</th><th>Mon</th><th>Tue</th><th>Wed</th><th>Thu</th><th>Fri</th><th>Sat</th>
</tr>';
$day_count = 1;
echo '<tr>';
while ($blank > 0) {
echo '<td></td>';
$blank = $blank-1;
$day_count++;
}
$day_num = 1;
while ($day_num <= $days_in_month){
echo "<td>$day_num</td>";
$day_num++;
$day_count++;
if ($day_count > 7) {
echo '</tr><tr>';
$day_count = 1;
while ($day_count > 1 && $day_count <= 7) {
echo '<td></td>';
$day_count++;
}
}
}
echo '</tr>
</table>';
}
calendar();
?>
решаемые
Был опечатка Sar вместо СБ в случае переключения. Поскольку он работал в течение большей части месяцев, которые я проверил, я не обратил на это внимания. Теперь он работает после коррекции.
Спасибо ребята
'$ month = date ('m', $ date); $ year = date ('Y', $ date); '.... где определена' $ date'? –
Поскольку на строке 'case" Sar есть опечатка: $ blank = 6; break; ', это должно быть« case »Sat»: $ blank = 6; перерыв; '. –
@MarkBaker Нет, вот почему это бросает ошибку извещения PHP. Он должен либо определить его, либо просто удалить его, чтобы получить «сегодняшний» месяц и год. –