Рассмотрим комплексный пример приложения, совместно использующего PHP и СУБД HyTech. Приложение предназначено для просмотра и редактирования таблиц в БД HyTech и реализует следующий сценарий взаимодействия с пользователем:
· При входе в приложение отображается форма ввода имени пользователя, пароля и строки соединения с БД (форма регистрации).
· После подтверждения ввода имени пользователя, пароля и строки соединения с БД выполняется попытка соединения с БД, в случае ошибки предлагается ввести имя пользователя, пароль и строку соединения с БД повторно. Форма регистрации также отображается в случае истечения сессии работы пользователя с системой (например, по тайм-ауту) или при наличии ошибки соединения с БД при очередном запросе (например, был остановлен сервер БД).
· В случае успешного соединения с БД отображается форма со списком таблиц (форма выбора), из этого списка предлагается выбрать таблицу для просмотра.
· После выбора таблицы отображается форма со списком строк таблицы (форма просмотра) и кнопками «Добавить строку», «Изменить строку», «Удалить строку», «Выбрать таблицу повторно». При нажатии кнопки «Выбрать таблицу повторно» происходит возврат к форме выбора.
· При нажатии кнопки «Удалить строку» отображается форма, в которой требуется подтвердить удаление. При подтверждении удаления выполняется удаление строки из БД. Далее происходит возврат в форму просмотра.
· При нажатии в форме просмотра кнопок «Добавить строку» или «Изменить строку» выполняется переход к форме редактирования. При нажатии кнопки «Сохранить» выполняется сохранение данных в БД (либо добавление, либо изменение). При успешном сохранении выполняется возврат в форму просмотра, при ошибке – предлагается ввести данные в форме редактирования повторно. Форма редактирования содержит кнопки «Сохранить» и «Отмена». При нажатии кнопки «Отмена» происходит возврат к списку строк (в случае кнопки «Добавить строку» эта форма будет содержать пустые поля, в случае кнопки «Изменить строку» поля этой формы будут заполнены реальными значениями из редактируемой строки таблицы).
Понятно, что из-за ограничений по времени (программный код, который мы можем рассмотреть не должен быть слишком большим), мы вынуждены ввести ряд упрощений. Надо сказать, что в реальных приложениях эти упрощения лучше не игнорировать. Итак:
· Отображаемые страницы нуждаются в дополнительном оформлении (выравниваниях, подборе шрифтов и т.п.). Считаем, что эта задача больше относится к веб-дизайну, чем к разработке ПО. По этой причине код отображаемых в браузере страниц содержит минимально необходимое количество элементов, зато этот код более удобен для изучения.
· PHP в примере используется «с нуля». В настоящее время такой подход встречается достаточно редко, поскольку существует множество библиотек, использование которых позволяет разрабатывать типовые решения значительно быстрее (например, это библиотеки шаблонов, типовых элементов пользовательского интерфейса, алгоритмов и т.п.). Однако, в данной теме в нашу задачу не входит изучение таких библиотек, и потому пример должен быть более наглядным.
· Названия полей в заголовках колонок или в формах ввода выводятся «как они есть» в словаре данных в БД HyTech. Специального кода, позволяющего отображать вместо имен полей поясняющую текстовую информацию (обычно название поля по-русски), в пример не включено.
· Считается, что первичный ключ в БД числовой, и это первое поле в таблице (это упрощает автоматическую генерацию запросов по выборке строк таблицы, а также изменению и удалению строк).
· При редактировании строки в качестве элемента редактирования всегда используется текстовое поле вне зависимости от типа поля в БД.
· При выборке данных для отображения в виде таблицы задано максимальное количество результирующих строк – 1000. Разбиения на страницы для удобства просмотра строк при этом не производится.