Заполнение календаря расписания

Я создаю систему планирования для своей школы, которая позволяет учителям бронировать комнаты/автомобили. Я просто застрял на одном аспекте: заполнение календаря. По сути, это будет просмотр месяца и недели. Ежемесячный просмотр я хорошо кодирую, но это еженедельный просмотр, на котором я застрял.

Люди, которые вставляют заказы, смогут указать дату бронирования и блок(ы) дня, который он занимает. Я мог бы просмотреть дни/блоки недели, выполняя запросы в эти дни и проверяя, не забронировано ли что-то в это время, но это было бы НАМНОГО неэффективно.

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

Есть ли лучший способ сделать это?


person BraedenP    schedule 20.09.2009    source источник
comment
Вы используете базу данных? почему бы вам просто не запросить все события этой недели, упорядоченные по дате и времени начала? Я не вижу ничего более эффективного, чтобы сделать это. Ваш проект включает повторение?   -  person RageZ    schedule 20.09.2009
comment
Да, с использованием базы данных, и да, это требует повторения. И я не могу просто перечислить события.. Это нужно отображать в разделах (6 блоков в день), и если блок запланирован, они не могут ничего запланировать во время этого блока.   -  person BraedenP    schedule 20.09.2009


Ответы (2)


Вы можете использовать быстрый календарь, он очень прост, вам просто нужно передать ему SQL-запрос, он будет работать так, как ожидается.

проверить этот учебник

http://www.evolt.org/quick_calendar_using_ajax_and_php

person santosh    schedule 20.09.2009
comment
В итоге им потребовались дополнительные пользовательские функции в календаре, но я использовал математику на этом сайте в качестве основы для расчета дней начала и т. д. Большое спасибо! - person BraedenP; 01.10.2009

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

person Jonathan Patt    schedule 20.09.2009
comment
Да, это один из вариантов, который я задал в вопросе. Но будет ли он достаточно эффективным? У него будет довольно много пользователей, использующих его в любой момент времени. - person BraedenP; 20.09.2009
comment
Это, вероятно, будет достаточно эффективным, поскольку и ваш набор данных, и количество времени, которое вы зацикливаете, довольно малы. Статическое кэширование/генерация контента при каждом обновлении расписания, вероятно, является для вас гораздо лучшим вариантом, чем микрооптимизация кода. - person AvatarKava; 20.09.2009