Фильтруем события, сортируем выдачу, используем LIMIT и корректно проверяем диапазоны дат и NULL.
Добавляем площадки и события фестиваля, получаем ID и проверяем записи через SQL и phpMyAdmin.
Создаём базу и первые таблицы, выбираем типы данных, первичные ключи, внешние ключи и ограничения.
Знакомимся с MySQL, SQL и phpMyAdmin на примере городского музыкального фестиваля, проверяем версии и готовим учебный стенд.
Готовим приложение к выкладке: актуальный PHP, public как веб-корень, Composer, конфигурация, права, логи и резервные копии.
Пишем тесты PHPUnit для валидации книги, проверяем тип результата и исключения и запускаем набор через Composer.
Подключаем SQLite через PDO, создаём таблицу и выполняем подготовленные запросы без склейки SQL из пользовательского ввода.
Принимаем данные формы, проверяем их на сервере, защищаем POST токеном CSRF и избегаем повторной отправки.
Разделяем точку входа, маршруты и HTML-шаблоны, оставляем public веб-корнем и безопасно выводим текст.
Читаем HTTP-метод и URI, возвращаем заголовки и статус ответа и запускаем локальную страницу через PHP CLI.
Сохраняем объекты в JSON, читаем их обратно и обрабатываем ошибки файлов. Понимаем, когда пора перейти к базе данных.
Проверяем название и год книги, разбираем InvalidArgumentException и ловим ошибки там, где приложению понятно, как ответить.