Генерируем календарь PHP скрипт
Итак, сегодня маленький урок по PHP . Давным-давно, когда я писал свою первую CMS, столкнулся с проблемой. Как сгенерировать календарь на php? Ведь есть високосный год, как правильно расставить дни, в соответствие с днем недели? Ломал голову около 2 дней, и в итоге, все же нашел решение. Для генерации календаря использовал 3 функции: mktime() , date() и str_replace().
Скрипт:
<?php
/*Проверяем какой год, если високосный то в феврале 29 дней иначе 28*/
if (date(L) == 1)
{
$m['01'] = 31;
$m['02'] = 29;
$m['03'] = 31;
$m['04'] = 30;
$m['05'] = 31;
$m['06'] = 30;
$m['07'] = 31;
$m['08'] = 31;
$m['09'] = 30;
$m['10'] = 31;
$m['11'] = 30;
$m['12'] = 31;
}
else
{
$m['01'] = 31;
$m['02'] = 28;
$m['03'] = 31;
$m['04'] = 30;
$m['05'] = 31;
$m['06'] = 30;
$m['07'] = 31;
$m['08'] = 31;
$m['09'] = 30;
$m['10'] = 31;
$m['11'] = 30;
$m['12'] = 31;
}
$FORM="";
for ($i=1;$i<=$m[date(m)];$i++)
{
$dn = date("D",mktime (0,0,0,date(n),$i,date(Y))); // День недели
$$dn = date("j",mktime (0,0,0,date(n),$i,date(Y))); // Дата
if (date("D",mktime (0,0,0,date(n),$i,date(Y))) == "Sun" || $i == $m[date(m)])
{
$FOR_CH="<tr><td>#Mon#</td><td>#Tue#</td><td>#Wed#</td><td>#Thu#</td><td>#Fri#</td><td>#Sat#</td><td>#Sun#</td></tr>\r\n";
$FORM.=str_replace(array("#Mon#","#Tue#","#Wed#","#Thu#","#Fri#","#Sat#","#Sun#"),array($Mon,$Tue,$Wed,$Thu,$Fri,$Sat,$Sun),$FOR_CH);
$Mon = " ";
$Tue = " ";
$Wed = " ";
$Thu = " ";
$Fri = " ";
$Sat = " ";
$Sun = " ";
}
}
echo "<table>\r\n
<tr><td><b>Пн</b></td><td><b>Вт</b></td><td><b>Ср</b></td><td><b>Чт</b></td><td><b>Пт</b></td><td><b>Сб</b></td><td><b>Вс</b></td></tr>\r\n
$FORM
</table>\r\n";
?>
Скрипт достаточно простой и Вам не нужен частный детектив услуги , что бы в нем разобраться. Во всем поможет php.ru
P.S. Изменил скрипт, ввиду замечания Кодера. В php у функции date() есть параметр L, который определяет високосный год на дворе или нет.
Поэтому условие:
if (date(y)/4 == ceil(date(y)/4))
Не верно, а верно следующие условие:
if (date(L) == 1)


Авторегер Narod.ru
[FAQ] Как грамотно писать скрипты под Human Emulator.
Автоматическая аддурилка Yandex
Test Maker v 1.0 — бесплатная CMS для создания online тестов
Здравствуйте! Меня зовут Михаил.Раньше я называл себя Новороссийским бомжем, но решил немного отойти от этого. Теперь мой блог - это Блог PHP программиста. Я уже 3 года занимаюсь PHP программированием. С недавнего времени создаю и продвигаю web сайты. Среди собственных разработок — самописная CMS, работающая на файлах, CMS для создания online тестов и т.д.
Код с ошибкой. Високосным не будет год 2100, хотя делится на 4 нацело.
Учим матчасть.
Отмазки про «когда это еще будет» адресовать тем кого напугало ошибка 2000.
[Ответить]
Исправил, использовал функцию date() с параметром L . Спасибо за замечание!
[Ответить]