2009-09-20 2 views
0

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

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

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

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

+0

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

+0

Да, используя базу данных, и да, это требует повторения. И я не могу просто перечислить события. Он должен отображаться в разделах (есть 6 блоков в день), и если блок запланирован, они не смогут запланировать что-либо во время этого блока. – BraedenP

ответ

1

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

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

http://www.evolt.org/quick_calendar_using_ajax_and_php

+0

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

1

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

+0

Да, это один из вариантов, которые я поставил в вопросе. Это будет достаточно эффективно? У него будет достаточно пользователей, которые будут использовать его в любой момент. – BraedenP

+0

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

Смежные вопросы