Урок 9: Завершение создания приложения для расчета стоимости путешествий
В "Создание приложения для расчета стоимости путешествий" была создана большая часть приложения для расчета стоимости турпоездки. Для проверки работоспособности приложения осталось только ввести реальные данные. Эти данные хранятся в базе данных newland_tours (которая обрабатывается программой Access или MySQL – в зависимости от выбранной серверной модели). В этом уроке будут продемонстрированы способы извлечения, обработки и отображения данных из базы, и на этом работу над приложением можно считать завершенной.
Помимо ручного кодирования при работе с базой данных в уроке применяются некоторые визуальные функции Dreamweaver. Например, для заполнения раскрывающегося списка формы на странице tourprice.asp динамическими данными используется простое диалоговое окно.
Часть времени, необходимая для выполнения урока, уделяется работе с SQL и созданию запросов. В частности, демонстрируется фильтрация SQL-запросов при помощи динамических данных, что позволяет использовать по-настоящему индивидуальный подход к каждому пользователю.
К концу урока на страницах tourprice.asp и tourprice_processor.asp будет такое количество серверного кода, что его будет трудно читать. Для облегчения работы со сценариями (и документами в целом) будут использованы комментарии, поясняющие те или иные строки кода.
К концу этого урока приложение для расчета стоимости путешествий будет использовать данные, динамически извлекаемые из базы данных
Что будет изучаться:
- динамическое заполнение раскрывающегося списка формы сведениями из базы данных;
- фильтрация запроса на основе динамических данных;
- обновление итоговой стоимости при помощи оперативных данных;
- применение комментариев.
Время выполнения
На выполнение этого урока потребуется приблизительно 45 мин.
Файлы урока
Исходные файлы:
Lesson09/Start/newland/tourprice.asp
Lesson09/Start/newland/tourprice_processor.asp
Итоговые файлы:
Lesson09/Complete/newland/tourprice.asp
Lesson09/complete/newland/tourprice_processor.asp
Создание динамически наполняемого списка
Как известно из "Создание приложения для расчета стоимости путешествий" , после заполнения формы на странице tourprice.asp серверу пересылаются три значения: число взрослых и детей, а также виртуальная стоимость турпоездки. После этого сценарий ASP, ColdFusion или PHP перемножает ее на количество взрослых и детей, а затем складывает полученные значения и помещает итоговую сумму в HTML-код.
Для замены умозрительных значений реальными потребуется кое-что сделать. Для начала следует заполнить раскрывающийся список формы реальными данными. Как известно, раскрывающийся список может пересылать только одно значение, в то время как требуется два: стоимость турпоездки для взрослых и для детей. Таким образом, вместо стоимости будет отправляться уникальный идентификатор путешествия. На странице tourprice_processor.asp по этому идентификатору формируется запрос на получение стоимости тура для взрослых и для детей, после чего он направляется в базу данных. На основе полученных данных рассчитывается итоговая стоимость, которая и выводится на странице.
Теперь следует более детально рассмотреть раскрывающийся список формы. Очевидно, что каждая опция в списке должна иметь два атрибута: надпись (label) (предназначена для просмотра посетителями и не пересылаемая после заполнения формы) и данные (data) (информация, которая пересылается в виде значения переменной формы). Несложно догадаться, что надпись должна включать название тура. Поскольку в базе данных названиям туров выделено отдельное поле, с их извлечением проблем не возникнет. В качестве пересылаемого значения, как говорилось ранее, должен выступать уникальный идентификатор путешествия. В данном случае это будет первичный ключ таблицы tbl_tours. Из предыдущего урока известно, что почти каждая таблица в базе данных содержит поле для первичного ключа, в каждой строке которого содержится уникальное значение (как правило, оно автоматически увеличивается на единицу при добавлении новой строки). Итак, в качестве названия для опции списка должно быть название тура, а в качестве данных – первич ный ключ tourID. Оба значения содержатся в таблице tbl_tours.
-
Откройте страницу tourprice.asp . На панели Bindings (Привязки) щелкните на кнопке New Binding (Создать привязку) ("+") и выберите в списке пункт Recordset (Query) (Набор записей [Запрос]).
Прежде чем настроить опции списка, следует сформировать набор записей, позволяющий прикрепить к форме нужные данные. В первую очередь, при работе с данными из базы данных всегда создается набор записей.
-
В поле Name (Имя) диалогового окна Recordset (Набор записей) введите имя "rs_tourprices". В раскрывающемся списке Connection (Соединение) выберите опцию conn_newland, а в списке Table (Таблица) – опцию tbl_tours. В разделе Columns (Столбцы) активируйте переключатель Selected (Выделенные), а затем, удерживая нажатой клавишу (Ctrl) (Windows) или (Control) (Macintosh), выделите пункты tourID и tourName.Примечание.Пользователям ColdFusion в поле со списком Connection (Соединение) следует выбрать вариант newland. Для подключения к базе данных ColdFusion не использует файл соединения conn_newland, подобно ASP или PHP. Другими словами, в то время как ASP и PHP для соединения с DSN newland сначала ссылаются на файл conn_newland.asp/php, ColdFusion подключается напрямую к DSN.
Теперь в диалоговом окне указана большая часть информации, необходимая для заполнения списка. После подтверждения выполненных настроек будет сгенерирован сценарий, по которому через соединение conn_newland производится поиск нужной базы данных, в которой отыскивается таблица tbl_tours. Из нее извлекаются все значения, содержащиеся в полях tourID и tourName, и записываются в набор записей rs_newland. Значения tourName будут использоваться в качестве надписей к элементам соответствующего списка, а значения tourID — в качестве данных.
-
В списке Sort (Сортировать) выберите пункт tourName, а в списке справа, — пункт Ascending (По возрастанию).
Если не указан другой вариант, данные выводятся в том порядке, в котором содержатся в базе данных. Сортировка поля tourName по возрастанию позволяет упорядочивать все туры в алфавитном порядке, что, безусловно, облегчит посетителям поиск нужных записей.
-
Нажмите кнопку Test (Проверить).
При нажатии отобразится содержимое набора записей в указанном порядке. При создании запросов нередко возникает необходимость проверить их на практике. На рисунке показано, что созданный запрос извлекает все 19 поездок и располагает их в алфавитном порядке (в поле tourName ).