---
title: Календарь на PHP, MySQL и ajax
date: 2007-06-08T10:00
tags: [php]
---

Для корпоративных сайтов зачастую нужен **календарь**. И ладно бы что-бы он просто показывал дни недели, так зачастую вносится понятие События (Event), а ввиду обширного потенциала этого понятия можно говорить об Event Management System. Поскольку деловым людям свойственно планирование, то такая система должна быть удобной, мобильной и расширяемой. За удобство отвачает ajax, за мобильность - само наличие интернета, а за расширяемость - программист и проектировщик.

А ведь _событие_ ещё может иметь и..

- повторяемость (с определённым периодом , до бесконечности/определённого числа повторений/конкретной даты )  
    
- местоположение (для точного - google maps, для неточного - просто текст)  
    
- привязку к временной зоне
- неопределённое время или длительность (идёт в todo список?)
- принадлежать группам или типам событий (деловые встречи, личные встречи, культурные мероприятия)
- доступ к просмотру для других пользователей (sharing, оповещение)
- систему оповещения по email/sms/desktop widget

---

### Публичные сервисы

На рынке сейчас есть передовые услуги не только с возможностью хранения всей информации, но и с синхронизацией устройств, приглашением других участников и тп.

- [google calender](http://www.google.com/calendar/render?tab=wc)
- [kiko](http://www.kiko.com/) удобен drag-and-drop способностью[  
    ](http://www.kiko.com/)
- [yahoo calender](http://calendar.yahoo.com/)  
    
- [CalendarHub](http://www.calendarhub.com/calendar/20768/month) имеет много настроек
- [30 коробок](http://www.30boxes.com/)
- [planzo](http://demo.planzo.com/), перетаскиваемый
- [spongecell](http://spongecell.com/calendar/view) перетаскиваемый
- [hipcal](http://hipcal.com/) статичный с приоритетами  
    

### Opensource-продукты

Когда дело касается своего сайта, то выбор значительно уже:

- [PlansCalendar](http://www.planscalendar.com/) на php/mysql, без ajax и видов по дням/неделям
- [phpiCalendar](http://phpicalendar.net/phpicalendar/day.php) внешне обманчив - работает на файловой системе с .ics файлами
- [monket](http://monket.net/wiki/monket-calendar/) хоть и на ajax, но скуден  
    
- [thyme](http://www.extrosoft.com/Demos/) платен и по сути чуть лучше чем PlansCalendar  
    
- jquery [fullcalendar](http://arshaw.com/fullcalendar/) - оболочка без серверной части
- jquery [wdcalendar](http://www.web-delicious.com/jquery-plugins-demo/wdCalendar/sample.php)  
    
- [myCalendar](http://www.feyasoft.com/myCalendar)

В итоге имеем проблему в том что публичные сервисы внешне функциональны, но не изменяемы и их невозможно связать со своей системой пользователей, системами планирования, базами клиентов и тп. В то же время доступные проекты с открытым исходным кодом откровенно не дотягивают ни по архитектуре ни по способам использования.

На будущее разработчикам - на забудьте что календарь должен быть интегрируем, экспортируем в outlook, [ical микроформат](http://en.wikipedia.org/wiki/ICalendar) , удобен и расширяем.

## Related

- [CSV - кодировки, импорт и экспорт](/ru/blog/tech/backend/php/csv-kodirovki-import-i-eksport/)
- [Drupal 7](/ru/blog/tech/backend/php/drupal-7/)
- [Mysql import - export](/ru/blog/tech/backend/DB/mysql/mysql-import-export/)
