Я занимаюсь разработкой системы бронирования для клиентов.Я застрял в одном месте.Временные интервалы для данной даты генерируются динамически, давая, время начала, время окончания, продолжительность и время перерыва.
$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:00 - 09:15 AM
09:30 - 09:45 AM
10:00 - 10:15 AM
10:30 - 10:45
11:00 - 11:15
11: 30:00 - 11:45 AM
12:00 - 12:15 Когда кто-то сделал бронирование, дата, время начала и время окончания будут сохранены в базе данных.и я могу проверить, что уже есть бронирование, используя этот запрос:
select * from bookings where starttime='$start' AND endtime='$end' AND bookingdate='$date'
Теперь проблема в том, что продолжительность является динамической.Когда я изменяю продолжительность на 30 минут. Новые временные интервалы будут сгенерированы следующим образом: 09:00 - 09:30 AM
9:45 - 10:15 AM
10:30 - 11:00 AM * 10101 * 11: 15:00 - 11:45 AM
12:00 PM - 12:30 PM
Теперь, если вы хотите проверить, забронирован ли слот, временные интервалы отличаются, а время начала и окончания теперь отличается от временисохранено в базе данных.Как я могу справиться с этой ситуацией?Я хочу, чтобы старые заказы продолжительностью 15 минут отображали «Забронировано» даже с новой продолжительностью 30 минут.
ОБНОВЛЕНИЕ Желаемый результат.когда у нас есть бронирование с 10:00 до 10:30 до 30 мин. Желаемые результаты в течение 15 мин.09:00 - 09:15 AM
09:30 - 09:45 AM
10: 00 утра - 10:30 утра - БРОНИРОВАНО 10:30 утра - 10:45 утра
11:00 утра -11:15 AM1030 * 11:30 - 11:45 AM
12:00 - 12:15