mysql — динамическая проверка бронирования временного интервала из базы данных переполнения стека

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

    $start = new DateTime($stTime);
$end = new DateTime($enTime);
$interval = new DateInterval("PT" . $duration. "M");
$breakInterval = new DateInterval("PT" . $break. "M");
for ($intStart = $start;
$intStart < $end;
$intStart->add($interval)->add($breakInterval)) {

$endPeriod = clone $intStart;
$endPeriod->add($interval);
if ($endPeriod > $end) {
$endPeriod=$end;
}
$starttime =  $intStart->format('h:iA');
$endtime = $endPeriod->format('h:iA');
$timeslot = $starttime.' - '.$endtime;
}

Теперь он успешно работает, генерируя временные интервалы, подобные этому, где продолжительность и время перерыва равны 15 минутам:
09:00 — 09:15
09:30 — 09:45
10:00 — 10:15
10:30 — 10:45
11:00 — 11:15
11:30 — 11:45
12:00 — 12:15
Когда кто-то сделал бронирование, дата, время начала и время окончания будут сохранены в базе данных. и я могу проверить, что уже есть заказ, используя этот запрос:

select * from bookings where starttime='$start' AND endtime='$end' AND bookingdate='$date'

Теперь проблема в том, что продолжительность является динамической. Когда я изменяю продолжительность до 30 минут.
Новые временные интервалы будут сгенерированы следующим образом
09:00 — 09:30
9:45 — 10:15
10:30 — 11:00
11:15 — 11:45
12:00 — 12:30

Теперь, если вы хотите проверить, забронирован ли слот, временные интервалы отличаются и время начала и окончания теперь отличается от времени, сохраненного в базе данных.
Как я могу справиться с этой ситуацией? Я хочу, чтобы старые заказы продолжительностью 15 минут отображали заказанные даже с новой продолжительностью 30 минут.

ОБНОВИТЬ
Желаемый результат.
когда у нас есть бронирование с 10:00 до 10:30 до 30 мин. Желаемые результаты в течение 15 мин.
09:00 — 09:15
09:30 — 09:45
10:00 — 10:30 — БРОНИРОВАНО
10:30 — 10:45
11:00 — 11:15
11:30 — 11:45
12:00 — 12:15

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector