/* Функция генерации календаря */ function draw_calendar($month,$year){ /* Начало таблицы */ $calendar = ''; /* Заглавия в таблице */ $headings = array('Понедельник','Вторник','Среда','Четверг','Пятница','Субота','Воскресенье'); $calendar.= ''; /* необходимые переменные дней и недель... */ $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.= ''; 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.= '
'.implode('',$headings).'
'; /* Пишем номер в ячейку */ $calendar.= '
'.$list_day.'
'; /** ЗДЕСЬ МОЖНО СДЕЛАТЬ MySQL ЗАПРОС К БАЗЕ ДАННЫХ! ЕСЛИ НАЙДЕНО СОВПАДЕНИЕ ДАТЫ СОБЫТИЯ С ТЕКУЩЕЙ - ВЫВОДИМ! **/ $calendar.= str_repeat('

',2); $calendar.= '
'; /* Все сделано, возвращаем результат */ return $calendar; } /* СПОСОБ ПРИМЕНЕНИЯ */ echo '

Июнь 2012

'; echo draw_calendar(6,2012);