2016-04-22 7 views
0

У меня есть следующий (упрощенный) код для создания календаря в PHP (представление месяца).Календарь заполнения пустых ячеек

<?php 

$d = date_Parse_from_format('Y-m-d',date('Y-m-d',strtotime($_GET['date']))); 

// month from date 
$month = $d['month']; 

// year from date 
$year = $d['year']; 

// days in month 
$days = cal_days_in_month(CAL_GREGORIAN,$month,$year); 

// first day 
// if sun (7) => 0 
// else +1 
$firstDay = date('N',strtotime($year.'-'.$month.'-1')); 

if($firstDay == 7){ 

    $firstDay = 1; 

}else{ 

    $firstDay = $firstDay+1; 

}; 

// last day 
$lastDay = $days; 

// start day = 1 
$day = 1; 

// start cell = 1 
$cell = 1; 

echo '<table border="1" width="700">'; 

echo '<tr>'; 

echo '<td>Sun</td><td>Mon</td><td>Tue</td><td>Wed</td><td>Thu</td><td>Fri</td><td>Sat</td>'; 

echo '</tr>'; 

for($row=0;$row<ceil((($lastDay+$firstDay)-1)/7);$row++){ 

echo '<tr>'; 

for($col=1;$col<=7;$col++){ 

    if($day > $days){ break; }; 

    if($cell < $firstDay){ 

     echo '<td></td>'; 

     $cell++; 

    }else{ 

     echo '<td>'.$day.'</td>'; 

     $day++; 

    }; 

}; 

echo '</tr>'; 

}; 

echo '</table>'; 

?> 

Первые клетки, не принадлежащие к месяцу заполняются пустыми, который работает правильно, но в конце стола есть передышки. Я хочу заполнить оставшиеся дни этой строки пустой ячейкой, но я не могу понять, как это сделать.

Я думаю, что он должен быть здесь, но как:

if($day > $days){ break; }; 

Я надеюсь, что вопрос ясен, извините за мой английский!

ответ

1

удалить код из петли

if($day > $days){ break; }; 

Измените, если условие для

if($cell < $firstDay || $day > $days){ 

я испытал его.

Смежные вопросы