PHP. Циклы. Условия. Единичное действие в конце цикла.
Дано:
Таблица в бд, состоящая из:
1)ID резервации; 2)Дата начала резервации; 3)Дата конца резервации; 4)ID жанра книги; 5)ID книги.
Цель: сделать на PHP алгоритм, делающий выборку по ИД книги (сверяется ID из таблицы и из инпута) и сверяющий пересечение интервалов дат (интервал дат с таблицы бд и из двух инпутов на странице, в которой и напишется будущий код), если такой интервал дат уже занят, то резервация не сохраняется, а выводится сообщение типа "Дата занята", если же интервалы дат не пересекаются, то резервация сохраняется.
Я почти всё сделал, только не понимаю как в конце цикла провести сохранение.

$allreserves=$bookrent->get_all_reserves(); //получаем из таблицы все резервации.
for ($i=0; $i<count($allreserves); $i++)
{
if ($_POST['book_id']==$allreserves[$i]['book_id']) //Равны ли ID книг
{
if ($_POST['start_date'] <= $allreserves[$i]['end_date'] AND $_POST['end_date'] >= $allreserves[$i]['start_date']) //Проверка пересечения дат (оно 100% верное)
{
echo "Невозможно сохранить! Даты пересекаются!!!"
break; // прерывание цикла (надо ли?!)
}
}
if ($i<count($allreserves))
{
//Может быть здесь провести сохранение?! (проверка показала, что идея плохая :( )
}
}
я бы сделал так принимаешь дату с формы, валидируешь ее
потом ищешь запись у которой дата с формы между датой начала и датой конца (SELECT * FROM table
WHERE $date BETWEEN start_date AND end_date) если нашлась ругаешься что интервал занят если нет то все ок
Уже не соответствует заданию. Сказали сделать выборку по id книги, а не все резервации сразу выбирать
Насчёт твоего вопроса: вытащи условие и сохранение за пределы цикла, оно у тебя внутрь попало