/* Функция генерации календаря */
function draw_calendar($month,$year){
/* Начало таблицы */
$calendar = '
';
/* Заглавия в таблице */
$headings = array('Понедельник','Вторник','Среда','Четверг','Пятница','Субота','Воскресенье');
$calendar.= ''.implode(' | ',$headings).' |
';
/* необходимые переменные дней и недель... */
$running_day = date('w',mktime(0,0,0,$month,1,$year));
$running_day = $running_day - 1;
$days_in_month = date('t',mktime(0,0,0,$month,1,$year));
$days_in_this_week = 1;
$day_counter = 0;
$dates_array = array();
/* первая строка календаря */
$calendar.= '';
/* вывод пустых ячеек в сетке календаря */
for($x = 0; $x < $running_day; $x++):
$calendar.= ' | ';
$days_in_this_week++;
endfor;
/* дошли до чисел, будем их писать в первую строку */
for($list_day = 1; $list_day <= $days_in_month; $list_day++):
$calendar.= '';
/* Пишем номер в ячейку */
$calendar.= ' '.$list_day.' ';
/** ЗДЕСЬ МОЖНО СДЕЛАТЬ MySQL ЗАПРОС К БАЗЕ ДАННЫХ! ЕСЛИ НАЙДЕНО СОВПАДЕНИЕ ДАТЫ СОБЫТИЯ С ТЕКУЩЕЙ - ВЫВОДИМ! **/
$calendar.= str_repeat(' ',2);
$calendar.= ' | ';
if($running_day == 6):
$calendar.= '
';
if(($day_counter+1) != $days_in_month):
$calendar.= '';
endif;
$running_day = -1;
$days_in_this_week = 0;
endif;
$days_in_this_week++; $running_day++; $day_counter++;
endfor;
/* Выводим пустые ячейки в конце последней недели */
if($days_in_this_week < 8):
for($x = 1; $x <= (8 - $days_in_this_week); $x++):
$calendar.= ' | ';
endfor;
endif;
/* Закрываем последнюю строку */
$calendar.= '
';
/* Закрываем таблицу */
$calendar.= '
';
/* Все сделано, возвращаем результат */
return $calendar;
}
/* СПОСОБ ПРИМЕНЕНИЯ */
echo 'Июнь 2012
';
echo draw_calendar(6,2012);