@rusgayfer

Как сделать выборку дат?

Есть значение в таблице, в которой хранятся список времени для публикации списком через запятую:

$dates = '08:00,09:00,12:30';

Далее есть таблица со списком опубликованных:

$rowInfo = array(
   array(
      'datetime' => '2022-03-16 08:00'
   ),
   array(
      'datetime' => '2022-03-16 09:00'
   ),
   array(
      'datetime' => '2022-03-15 12:30'
   )
);


Как мне сделать выборку, если на сегодня все даты с этим временем $dates уже запланированы, то переносить на следующий день. А если и на следующий запланировано, то на другой день и т д.
А если вообще пусто, то планировать на сегодняшние даты.

Должно выйти так:
2022-03-16 08:00
2022-03-16 09:00
2022-03-16 12:30
2022-03-17 08:00
2022-03-17 09:00
2022-03-17 12:30
2022-03-18 08:00
2022-03-18 09:00
2022-03-18 12:30
...


Сама логика должна быть такая. Скрипт проверяет ближайшее время из списка с текущем сейчас временем и планирует дату на это время, если же на сегодня закончилось время, то планирует на следующий день и т д.
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 1
rc-dm
@rc-dm
Full-Stack Web Developer
Если ты используешь SQL и у тебя есть какая-то запись в таблице хранит в себе данные, по которым должна быть возможна выборка, то тебе стоит сделать две таблицы.

Например в таблице "Films" хранятся фильмы:
  1. id - Порядковый номер (первичный ключ)
  2. name - Название фильма


И в таблице "Sessions":
  1. id - Порядковый номер (первичный ключ)
  2. film_id - Номер фильма согласно таблице "Films"
  3. date - Дата сеанса кино


Таким образом ты можешь делать выборку по нужному фильму и дате.
Отмечу что благодаря связям можно удалив "фильм" автоматически удалить все "сеансы".

Если тебе нужно сохранить массив в базе данных, лучше использовать тип ячейки JSON.
Если очень хочется хранить текст, создай обычный массив и использоваться функцию serialize для того чтобы получить пригодное для хранение представление этого массива. Когда тебе понадобится получить этот массив из базы, достаточно будет применить unserialize
Но учитывай, что ни по JSON, ни по сериализированному массиву, адекватным образом выбрать из базы не получится. Твой вопрос должен относится к архитектуре базы данных, а не к PHP.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы