Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Календарь


Автор: StachelDraht 20.3.2007, 12:55
Привет!
Хочу написать календарь с добавлением событий.
Помогите пожалуйста с алгоритмом.

Готовые скрипты тырить не хочу, все равно ничего там не пойму.

Автор: mclight 20.3.2007, 14:47
ну смотри........можешь ты это сделать с файлами....а можешь и с MySQL.....
ты скажи как тебе удобно.....

Автор: mikla 20.3.2007, 15:08
Самое главное - получить номер дня недели 1го числа месяца.
Код

$months=array("","Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь");
$days = array("","Пн","Вт","Ср","Чт","Пт","Сб","Вс");    
$nDays = array(0,31,28,31,30,31,30,31,31,30,31,30,31);
$nDays[2] = ($yy%4==0) ? 29 : 28;    
$a = intval ((14-$mm) / 12);
$y = intval ($yy - $a);
$m = intval ($mm + 12*$a - 2);
$dayNumber = (7000 + (1 + intval($y) + intval($y/4) - intval($y/100) + intval($y/400) + intval((31*$m)/12 ))) % 7;
$cDoWeek = ($dayNumber!=0) ? $dayNumber : 7;    


$dayNumber  - номер дня недели 1го числа месяца $mm в году $yy , который высчитывается по ф-ле. форумула описываеться здесь : http://ru.wikipedia.org/wiki/%D0%92%D0%B5%D1%87%D0%BD%D1%8B%D0%B9_%D0%BA%D0%B0%D0%BB%D0%B5%D0%BD%D0%B4%D0%B0%D1%80%D1%8C

делее цикл. и выводишь сам календарь  smile проверяя при этом, есть ли запись в базе. 


Автор: mclight 20.3.2007, 15:17
при этом не забывайте что записей может и не быть.......

Автор: mikla 20.3.2007, 15:35
да.. в $dayNumber   0 -это воскресенье. 1-понедельник и тд. 

Автор: mclight 20.3.2007, 15:43
ну если по-программерски думать, то 0-это понедельник.......как никак отсчет начинается с нуля, неделя - с понедельника...........
а вообще-то можно 1-понедельник,...,7-воскресенье..................кому как удобно.............
 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)