В таблице event хранятся события, и есть колонки id,name,start,end;
в event_days_of_week есть id_event, Monday, Tuesday, Wednesday, Thursday, Friday, Suturday, Sunday
в start и end содержатся дата начала и дата конца события
в названиях недели содержится числа для сортировки, и если в каком то дне недели стоит 0, нам нужно его пропустить.
собственно нужно выбрать все события в диапазоне сегодняшний день + 28 дней, не выбирать событие в день недели, в котором у него стоит 0, и отсортировать по дням недели.
На выходе должны получить такой массив:
$array[дата_дня][индекс событий,которые вошли в этот день 0,1,2,3 и т.д.][свойства этого события id,name,start,date]
я выбираю события через цикл средствами php
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- for($a=0;$a<28;$a++){
- $query = 'SELECT e.id,e.name FROM event e '
- . 'INNER JOIN event_days_of_week d ON d.event_id=e.id '
- . 'WHERE e.start <= ADDDATE(CURDATE(),?) AND e.end >= ADDDATE(CURDATE(),?) '
- . 'AND d.'.$day_of_week.' != 0 '
- . 'ORDER BY d.'.$day_of_week
- ;
- $result[$date] = $this->get_data($query, 'assoc', $array);
- }