Календарь на текущий месяц
Цель - используя PHP вывести календарь на текущий месяц. Это минимальный костяк. Дальше его можно дорабатывать, разукрашивать и переделывать под свои нужды.
Скопировано
<?php
$mos = [ 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь' ];
echo '<h2>' . $mos[date('n')-1] . ' ' . date( 'Y' ) . '</h2>'; ?>
<table>
<tr>
<th>Пн</th>
<th>Вт</th>
<th>Ср</th>
<th>Чт</th>
<th>Пт</th>
<th>Сб</th>
<th>Вс</th>
</tr> <?
$today = date( 'd' ); // Текущий день
$month = date( 'm' ); // Текущий месяц
$year = date( 'Y' ); // Текущий год
$days = cal_days_in_month( CAL_GREGORIAN, $month, $year ); // Дней в текущем месяце
$lastmonth = date( 't', mktime( 0, 0 , 0, $month-1, 1, $year ) ); // Дней в предыдущем месяце
$start = date( 'N', mktime( 0, 0 , 0, $month, 1, $year ) ); // Позиция первого дня текущего месяца
$finish = date( 'N', mktime( 0, 0, 0, $month, $days, $year ) ); // Позиция последнего дня текущего месяца
$laststart = $start - 1; // Дней от предыдущего месяца в календаре
$counter = 1;
$nextMonthCounter = 1;
$rows = $start > 5 ? 6 : 5;
for( $i = 1; $i <= $rows; $i++ ) {
echo '<tr class="week">';
for( $x = 1; $x <= 7; $x++ ) {
$class = '';
if( ( $counter - $start ) < 0 ) {
$date = ( ( $lastmonth - $laststart ) + $counter );
$class = 'class="blur"';
}
elseif( ( $counter - $start ) >= $days ) {
$date = $nextMonthCounter;
$nextMonthCounter++;
$class = 'class="blur"';
}
else {
$date = ( $counter - $start + 1 );
if( $today == $counter - $start + 1 ) {
$class = 'class="today"';
}
}
echo "<td $class><a class='date'>$date</a></td>";
$counter++;
}
echo '</tr>';
} ?>
</table>
Показать код
Скопировано
.blur {
background: #eee;
}
.today {
border: 1px solid red;
}
Показать код