заказ по календарь

Ann

Новичок
заказ по календарь

Задали мне тут задачку. А я по неумности своей не знаю как к ней приступить.
Итак. Человек заказывает оборудование на тестирование на определенное количесто времени, резервируя таким образом это время. Как сделать чтобы эти даты были недоступны для других пользователей? Как сделать такой календарь?
 

white phoenix

Новичок
Как я понимаю, есть некая форма заказа, где среди прочего заказчик выбирает некое время (дату) выполнения заказа. И в один момент времени может выполнятся лишь один заказ. Эта задача выполняется очень просто. Ты сможешь написать скрипт вывода календаря? Те дни которые уже заняты (т.е. всё время занято согласно БД), можно выделить цветом и не делать подстановку даты в форму по клику на число. При клике на свободный (или частично свободный) день нужно выбирать из БД уже занятое время в этот день, и предложить выбрать из остального (свободного). Ну и занести в базу среди прочего, дату и время. Суммарно это будет максимум 4-5 кб кода.
 

Ann

Новичок
Я понимаю как зарезервировать один день, но как зарезервировать промежуток времени? Заказчик выбирает дату начала и дату конца периода тестирования! Я так понимаю: надо вычислить все даты этого промежутка и занести их в таблицу, а при последующих заказах сравнивать свой календарь с этими датами?
Если да, то как вычислить все эти даты?
 

j0ker

Новичок
перебрать в цикле от начальной даты до конечной и занести их в бд
 

white phoenix

Новичок
Ann
Т.е. не нужно по часам (минутам) разбивать? Это еще проще. Я бы не вычеслял даты, а хранил дату начала заказа и окончания в таблице с заказами. А при построении календаря выбирал из БД и раскрашивал его как нужно.
j0ker
В отдельную таблицу чтоли?
 

SunDrop

Помощник поисков. робота
j0ker
ЗАЧЕМ?

Ann
Два поля заводишь:
date_start и date_end
Все что больше date_start И меньше date_end - занятое время.
Все что меньше date_start ИЛИ больше date_end - свободное время.

Идея есть, select-ы сделаешь. Все остальное думаю тоже!
 

Фанат

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

SunDrop

Помощник поисков. робота
white phoenix


Солидарность с разницей в 3 минуты! :)
 

white phoenix

Новичок
Ну он же j0ker, прикалывается так :)
SunDrop
Свободное время выбирать насколько я понимаю не придется, только занятое закрашивать.
 

Wicked

Новичок
если входные параметры $start, $end ($end = $start + $duration), то проверить, есть ли пересечения с другими промежутками можно так:

SELECT count(*) FROM schedule WHERE $start <= date_end AND $end >= date_start;
 

Ann

Новичок
Огромное спасибо. В голове просветлилось. Попробую сделать!
 

_vampiro_

Новичок
есть еще BETWEEN :D

а вообще-то я бы хранил всё в одном массиве, который соххранял бы в файлик каждый раз. Данные не на столько часто меняются, чтобы их в БД хранить.
 

_vampiro_

Новичок
Я не даю советов вообще, просто показываю варианты решения. Не всё на свете требуетъ объектов и баз данных, иногда гвоздь можно просто забить молотком ;) Давай не бум спорить и плодить оффтоп.
 
Сверху