Skip to content

Instantly share code, notes, and snippets.

Created Jun 18, 2010
Embed
What would you like to do?
<?php
// проверяем передали ли нам месяц и год
if(isset($_GET["ym"]))
{
$year = (int)substr($_GET["ym"], 0, 4);
$month = (int)substr($_GET["ym"], 4, 2);
}
else // иначе выводить текущие месяц и год
{
$month = date("m", mktime(0,0,0,date('m'),1,date('Y')));
$year = date("Y", mktime(0,0,0,date('m'),1,date('Y')));
}
$skip = date("w", mktime(0,0,0,$month,1,$year)); // узнаем номер дня недели
$daysInMonth = date("t", mktime(0,0,0,$month,1,$year)); // узнаем число дней в месяце
$calendar_head = ''; // обнуляем calendar head
$calendar_body = ''; // обнуляем calendar boday
$day = 1; // для цикла далее будем увеличивать значение
for($i = 0; $i < 6; $i++) // Внешний цикл для недель 6 с неполыми
{
$calendar_body .= '<tr>'; // открываем тэг строки
for($j = 0; $j < 7; $j++) // Внутренний цикл для дней недели
{
if(($skip > 0)or($day > $daysInMonth)) // выводим пустые ячейки до 1 го дня ип после полного количства дней
{
$calendar_body .= '<td class="none">&nbsp;</td>';
$skip--;
}
else
{
if($j == 0) // если воскресенье то омечаем выходной
$calendar_body .= '<td class="holiday">'.$day.'</td>';
else { // в противном случае просто выводим день в ячейке
if ((date(j)==$day)&&(date(m)==$month)&&(date(Y)==$year)){//проверяем на текущий день
$calendar_body .= '<td class="today">'.$day.'</td>';
}
else{
$calendar_body .= '<td class="day">'.$day.'</td>';
}
}
$day++; // увеличиваем $day
}
} // закрываем внутренний цикл
$calendar_body .= '</tr>'; // закрываем тэг строки
} // закрываем внешний цикл
// заголовок календаря
$calendar_head = '
<tr>
<th colspan="2"><a href="?ym='.date("Ym", mktime(0,0,0,$month-1,1,$year)).'">&laquo; Пред</a></th>
<th colspan="3">'.date("F, Y", mktime(0,0,0,$month,1,$year)).'</th>
<th colspan="2"><a href="?ym='.date("Ym", mktime(0,0,0,$month+1,1,$year)).'">След &raquo;</a></th>
</tr>
<tr>
<th>Воскресенье</th>
<th>Понедельник</th>
<th>Вторник</th>
<th>Среда</th>
<th>Четверг</th>
<th>Пятница</th>
<th>Суббота</th>
</tr>';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;" />
<title>Calendar</title>
<style type="text/css">
body{margin:0 auto; width:800px; padding:10px;}
#calendar{border:0px;}
#calendar tbody tr{ height:40px;}
#calendar td{ width:80px; border:0px; border:solid 1px #99FF99; font-size:22px; text-align:center;}
#calendar th{background-color:#4DDBFF; border:solid 1px #00CCFF; color:#ffffff;}
#calendar td.none{border:0px;}
#calendar td.holiday{ background-color:#FF6633; border-color:#FF531A; color:#94E4FF;}
.day{ background-color:#CCFFCC; color:#00B32D;}
#calendar td.today{background-color:#FFFF99; border-color:#FF531A;}
</style>
</head>
<body>
<!-- таблица для вывода календаря -->
<table id="calendar" width="710" border="1" cellspacing="0" cellpadding="5">
<thead>
<?php echo $calendar_head; ?>
</thead>
<tbody>
<?php echo $calendar_body; ?>
</tbody>
</table>
<!-- таблица для вывода календаря -->
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment