Итак, я создаю систему доставки еды.Я хочу проверить, если время заняло.Проблема в том, что есть продолжительность, связанная с некоторыми временами.Это довольно легко сделать, если нет продолжительности.
ПРИМЕР РАБОЧЕГО КОДА:
Например, вот моя таблица deliveries
:
+----+---------------+---------------+----------+
| id | delivery_date | delivery_time | duration |
+----+---------------+---------------+----------+
| 1 | 2018-02-18 | 10:30:00 | null |
+----+---------------+---------------+----------+
Скажем, выбранное мной время доставки - 2018-02-18 10:30:00
, тогда оно будет принято.Код:
$deliveryDate = '2018-02-18';
$deliveryTime = '10:30:00';
$stmt = "SELECT id FROM deliveries WHERE appointment_date = :date AND appointment_time = :time";
$stmt->bindParam(':date', $deliveryDate);
$stmt->bindParam(':time', $deliveryTime);
$stmt->execute();
$result = $stmt->fetch();
if($result) {
echo 'Sorry, this is already taken!';
}
Этот код работает.
ПРИМЕР НЕ РАБОЧЕГО КОДА:
Я пытаюсь найтиЕсли я изменим duration
с null
на 40
(40 минут), потребуется заблокировать 2018-02-18 10:30:00 to 11:10:00
.
Допустим, продолжительность составляет 40 (минут), а delivery_time
составляет 11:05:00
.Это должно его заблокировать.
+----+---------------+---------------+----------+
| id | delivery_date | delivery_time | duration |
+----+---------------+---------------+----------+
| 1 | 2018-02-18 | 10:30:00 | 40 |
+----+---------------+---------------+----------+
$deliveryDate = '2018-02-18';
$deliveryTime = '11:05:00';
$stmt = "SELECT id FROM deliveries WHERE appointment_date = :date AND appointment_time = :time";
$stmt->bindParam(':date', $deliveryDate);
$stmt->bindParam(':time', $deliveryTime);
$stmt->execute();
$result = $stmt->fetch();
if($result) {
echo 'Sorry, this is already taken!';
}
Как мне сделать так, чтобы продолжительность учитывалась?