Проверка доступности времени для записи

Тема в разделе "PHP", создана пользователем timur_, 26 апр 2017.

Статус темы:
Закрыта.
Модераторы: latteo
  1. timur_

    timur_ Постоялец

    Регистр.:
    27 окт 2014
    Сообщения:
    116
    Симпатии:
    62
    Есть система резервации, где выбирается дата и время брони, а после, эти параметры передаются в post на др. страницу и там оплачиваются.
    Как организовать то, чтобы была некая проверка доступности времени на данный день или время?
    т.е. есть дата - 01/05/2017, для записи доступно 8 часов - с 12 до 7
    [​IMG]
     
  2. luciolo

    luciolo Создатель

    Регистр.:
    28 сен 2016
    Сообщения:
    32
    Симпатии:
    20
    Хранить, например в базе, занятые часы и перед выводом страницы где записываются проверять какие часы свободны и блокировать их

    Да.
    Можно потом данные из бд обернуть в этот класс с удобным API.
    https://github.com/spatie/opening-hours
     
    Последнее редактирование модератором: 26 апр 2017
    timur_ и Delk0 нравится это.
  3. timur_

    timur_ Постоялец

    Регистр.:
    27 окт 2014
    Сообщения:
    116
    Симпатии:
    62
    ради одной таблицы использовать БД?

    т.е. после оплаты я создаю запись с датой и временем, а как мне проверять что выводить?
     
    Последнее редактирование модератором: 26 апр 2017
  4. nejtr0n

    nejtr0n Постоялец

    Регистр.:
    24 янв 2014
    Сообщения:
    127
    Симпатии:
    71
    храните список бронированных интервалов.
    Затаем передаёте его в качестве аргумента exceptions конструктора

    Код:
    $openingHours = OpeningHours::create([
        'monday' => ['09:00-12:00', '13:00-18:00'],
        'tuesday' => ['09:00-12:00', '13:00-18:00'],
        'wednesday' => ['09:00-12:00'],
        'thursday' => ['09:00-12:00', '13:00-18:00'],
        'friday' => ['09:00-12:00', '13:00-20:00'],
        'saturday' => ['09:00-12:00', '13:00-16:00'],
        'sunday' => [],
        'exceptions' => [
            '2016-11-11' => ['09:00-12:00'],
            '2016-12-25' => [],
        ],
    ]);
    Проверить, не забронировано ли время можно будет
    через метод
    Код:
    $openingHours->isOpenAt(new DateTime('2016-09-26 19:00:00'));
     
    timur_ и latteo нравится это.
Статус темы:
Закрыта.