Добавление динамических данных в сценарий расчета
До этого момента (дважды), данные из базы помещались напрямую в HTML-код. В первый раз на главную страницу index.asp выводилась запись "Traveler’s Journal", а во второй — в качестве элементов списка формы были указаны пары значений tourName-tourID. Стоимость туров для взрослых и для детей следует не отображать на странице, а вставлять в сценарий расчета. В код сценария данные добавляются тем же способом, что и в XHTML.
Но вначале необходимо добавить на страницу еще код для вывода названия путешествия, для которого рассчитывалась стоимость – на случай, если посетитель забудет о сделанном выборе или, напротив, пожелает выбрать другой тур.
- В документе tourprice_processor.asp переключитесь в режим Design (Дизайн). После слова "tour" в первом предложении введите следующие символы: ", XX,". На панели Property Inspector (Инспектор свойств) выделите знаки XX с помощью полужирного начертания.
Снова символ "X" применяется для замены текста. Достоинство использования заменителя текста заключается в возможности форматировать его так, как должно выглядеть динамическое содержимое (в данном случае – выделение посредством полужирного начертания).
- Выделите знаки XX. В категории Application (Приложение) на панели Insert (Вставка) щелкните на кнопке Dynamic Data (Динамические данные) и в раскрывающемся списке выберите опцию Dynamic Text (Динамический текст).
Вкладка Application (Приложение) применяется для добавления общих динамических элементов, например, динамического текста.
- В диалоговом окне Dynamic Text (Динамический текст) разверните список Recordset (rs_tourprices_filtered) и выберите пункт tourName. Нажмите OK.
Выполненное действие аналогично перетаскиванию переменной из панели Bindings (Привязки) на страницу. В область кода будет добавлен еще один фрагмент кода.
При использовании ASP вместо символов XX будет добавлен следующий код:
<%=(rs_tourprices_filtered.Fields.Item("tourName").Value)%>.
Как известно из предыдущих уроков, <%= (в отличие от <%) означает <% Response.Write, – теперь код предназначен для вывода данных. Остальной код позволяет догадаться, что выводится значение поля tourName из набора отфильтрованных записей rs_tourprices_filtered.
При использовании ColdFusion появится такой код:
<cfoutput>#rs_tourprices_filtered.tourName#</cfoutput>
Тег <cfoutput> эквивалентен функции ASP Response.Write(), а выводит он определенное значение в поле tourName, хранящееся в отфильтрованном наборе записей rs_tourprices_filtered.
При использовании PHP код будет следующим:
<?php echo $row_rs_tourprices_filtered['tourName']; ?>
Команда echo выполняет те же действия, что и Response.Write() (ASP) или <cfoutput> (ColdFusion). Так же, как в случае ASP и ColdFusion, этот код выводит значение в поле tourName, хранящееся в наборе записей rs_tourprices_filtered.
Важно просмотреть и понять этот код, поскольку на следующем шаге придется создать код вручную.
- В режиме Code (Код) найдите сценарий расчета. Удалите строку, устанавливающую значение переменной basePrice равным значению переменной tourName.
В ASP код, который следует удалить, выглядит следующим образом: basePrice=Request.Form("tourName"). Находится он в строке 34.
В ColdFusion код выглядит так: <cfset basePrice = form.tourName>. Он размещен в строке 14.
В PHP код выглядит таким образом: $basePrice = $_POST['tourName']; и расположен в строке 12.
Эта строка больше не нужна, поскольку теперь стоимость тура передается не из формы, а из базы данных. Вдобавок требуется использовать два вида цен: для взрослых и для детей.
увеличить изображение
- Добавьте две новые строки кода, в которых задается значение двух новых переменных: basePriceAdult и basePriceChild.
Для ASP:
basePriceAdult=rs_tourprices_filtered.Fields.Item("basePriceAdult").Value basePriceChild=rs_tourprices_filtered.Fields.Item("basePriceChild").Value
Для ColdFusion:
<cfset basePriceAdult = rs_tourprices_filtered.basePriceAdult> <cfset basePriceChild = rs_tourprices_filtered.basePriceChild>
Для PHP:
$basePriceAdult = $row_rs_tourprices_filtered['basePriceAdult']; $basePriceChild = $row_rs_tourprices_filtered['basePriceChild'];
Все три участка кода создают две новые переменные и устанавливают их значения равными соответствующей стоимости тура (извлеченной из базы данных) для взрослых и для детей.
- Только пользователям ASP. Удалите из строки с объявлением переменных (начинается с ключевого слова Dim) переменную basePrice и добавьте новые переменные basePriceAdult и basePriceChild.
Поскольку в ASP требуется явно объявлять любую переменную, важно обновлять этот список при каждом создании или удалении переменных.
- В строке, содержащей выражение для расчета стоимости тура, замените переменные basePrice на новые.
Для ASP:
tourPrice = (numAdult * basePriceAdult) + (numChild * basePriceChild)
Для ColdFusion:
<cfset tourPrice = (numAdult * basePriceAdult) + (numChild * basePriceChild)>
Для PHP:
$tourPrice = ($numAdult * $basePriceAdult) + ($numChild * $basePriceChild);
Теперь выражение для расчета стоимости туров включает значения, извлекаемые из базы данных.
- Сохраните страницу tourprice_processor.asp и загрузите ее на сервер. На панели Site (Сайт) выберите файл tourprice.asp и нажмите клавишу (F12) для тестирования приложения.
Приложение работает как запланировано. На основе введенной пользователем информации выводится правильная стоимость. Самое лучшее, что для поддержки приложения достаточно обновлять данные в базе данных. Если будет повышена стоимость туров и в базу будет добавлено новое значение, то это немедленно будет учтено и в сценарии расчета. Точно так же приложение будет корректно работать и при удалении существующих или добавлении новых туров.
увеличить изображение
Содержание Назад Вперед