Опубликован: 24.12.2006 | Уровень: для всех | Доступ: свободно

Урок 9: Завершение создания приложения для расчета стоимости путешествий

< Урок 8 || Урок 9: 12345 || Урок 10 >
Аннотация: В лекции рассказывается, как: заполнять список данными из базы данных; создавать набор записей с применением динамической фильтрации; выводить итоговые данные в HTML и непосредственно в сценарий сервера; добавлять к коду комментарии.

Внимание! Для работы с этим курсом необходимы учебные файлы, которые Вы можете загрузить здесь.

В "Создание приложения для расчета стоимости путешествий" была создана большая часть приложения для расчета стоимости турпоездки. Для проверки работоспособности приложения осталось только ввести реальные данные. Эти данные хранятся в базе данных 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.

  1. Откройте страницу tourprice.asp . На панели Bindings (Привязки) щелкните на кнопке New Binding (Создать привязку) ("+") и выберите в списке пункт Recordset (Query) (Набор записей [Запрос]).

    Прежде чем настроить опции списка, следует сформировать набор записей, позволяющий прикрепить к форме нужные данные. В первую очередь, при работе с данными из базы данных всегда создается набор записей.


  2. В поле 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 — в качестве данных.


  3. В списке Sort (Сортировать) выберите пункт tourName, а в списке справа, — пункт Ascending (По возрастанию).

    Если не указан другой вариант, данные выводятся в том порядке, в котором содержатся в базе данных. Сортировка поля tourName по возрастанию позволяет упорядочивать все туры в алфавитном порядке, что, безусловно, облегчит посетителям поиск нужных записей.


  4. Нажмите кнопку Test (Проверить).

    При нажатии отобразится содержимое набора записей в указанном порядке. При создании запросов нередко возникает необходимость проверить их на практике. На рисунке показано, что созданный запрос извлекает все 19 поездок и располагает их в алфавитном порядке (в поле tourName ).

< Урок 8 || Урок 9: 12345 || Урок 10 >
Юрий Макушин
Юрий Макушин
Россия, Москва, РЭА им. Плеханова, 2004