<?php
// Функция формирует двумерный массив, представляющий собой
// календарь на указанный месяц и год. Массив состоит из строк,
// соответствующих неделям. Каждая строка -
массив из семи
// элементов, которые равны числам (или пустой строке, если
// данная клетка календаря пуста).
function makeCal
($year, $month) {
// Получаем номер дня недели для 1 числа месяца. Корректируем
// его, чтобы воскресенье соответствовало числу 7, а не числу 0.
$wday = JDDayOfWeek
(GregorianToJD
($month, 1, $year), 0);
if ($wday == 0) $wday = 7;
// Начинаем с этого числа в месяце (если меньше нуля
// или больше длины месяца, тогда в календаре будет пропуск).
$n = - ($wday -
2);
$cal = array();
// Цикл по строкам.
for ($y=0; $y<6; $y
++) {
// Будущая строка. Вначале пуста.
$row = array
();
$notEmpty = false;
// Цикл внутри строки по дням недели.
for ($x=0; $x<7; $x
++, $n++) {
// Текущее число >0 и < длины месяца?
if (checkdate
($month, $n, $year)) {
// Да. Заполняем клетку.
$row
[] = $n;
$notEmpty = true;
} else {
// Нет. Клетка пуста.
$row
[] = "";
}
}
// Если в данной строке нет ни одного непустого элемента,
// значит, месяц кончился.
if (!
$notEmpty) break;
// Добавляем строку в массив.
$cal
[] = $row;
}
return $cal;
}
// Формируем календарь на текущий месяц.
$now = getdate();
$cal = makeCal
($now
['year'], $now
['mon']-1);
?>
<!--
Шаблон вывода календаря. --
>
<table border=1>
<tr>
<td>Пн</td>
<td>Вт</td>
<td>Ср</td>
<td>Чт</td>
<td>Пт</td>
<td>Сб</td>
<td style="color:red">Вс</
td>
</tr>
<!--
цикл по строкам --
>
<?
foreach ($cal as $row) {?
>
<tr>
<!--
цикл по столбам --
>
<?
foreach ($row as $i=>
$v) {?>
<!--
воскресенье -
"красный" день --
>
<td style="color:red">
<?=
$v? $v : "&nbsp;"?
>
</td>
<?}?>
</tr>
<?}?>
</table>
?>
1 13 0
0

Нет фото
• 15 фев 2014, 18:43


На сайте дыра 303546184