имеется две таблицы:
1. id, name, period(здесь указывается как будет повторяться событие: каждый день - every_day, в определенные дни недели - week_days), sort(если 0, то это week_days), start, end
2. event_id, Monday,Tuesday,Wednesday, Thursday, Friday, Saturday, Sunday в этой таблице хранится сортировка по дням недели, если 0, то в этом событии, этот день не повторяется( не участвует в сортировке),
сортировка храниться в таком виде - sort(из первой таблицы).сортировка по дням недели( пример 1.001,2.001,2.002)
и так
После ввода даты начала и конца, и периодичности, происходит запрос в базу данных для выбора сортировки:
если периодичность указана как every_day, то запрос выбирает все события, которые соответствуют диапазону дат(начало - конец)
CODE (SQL):
скопировать код в буфер обмена
скопировать код в буфер обмена
- SELECT `sort`,`name`
- FROM `event`
- WHERE `period`="every_day" AND ((`start`<=? AND `end`>=?) OR (`end`>=? AND `start`<=?)) OR (`start`>=? AND `end`<=?))
- ORDER BY sort
- $array = array('ssssss',$day_end, $day_end, $day_start, $day_start, $day_start, $day_end);