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

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

< Урок 8 || Урок 9: 12345 || Урок 10 >

Добавление динамических данных в сценарий расчета

До этого момента (дважды), данные из базы помещались напрямую в HTML-код. В первый раз на главную страницу index.asp выводилась запись "Traveler’s Journal", а во второй — в качестве элементов списка формы были указаны пары значений tourName-tourID. Стоимость туров для взрослых и для детей следует не отображать на странице, а вставлять в сценарий расчета. В код сценария данные добавляются тем же способом, что и в XHTML.

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

  1. В документе tourprice_processor.asp переключитесь в режим Design (Дизайн). После слова "tour" в первом предложении введите следующие символы: ", XX,". На панели Property Inspector (Инспектор свойств) выделите знаки XX с помощью полужирного начертания.

    Снова символ "X" применяется для замены текста. Достоинство использования заменителя текста заключается в возможности форматировать его так, как должно выглядеть динамическое содержимое (в данном случае – выделение посредством полужирного начертания).


  2. Выделите знаки XX. В категории Application (Приложение) на панели Insert (Вставка) щелкните на кнопке Dynamic Data (Динамические данные) и в раскрывающемся списке выберите опцию Dynamic Text (Динамический текст).

    Вкладка Application (Приложение) применяется для добавления общих динамических элементов, например, динамического текста.


  3. В диалоговом окне 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.

    Важно просмотреть и понять этот код, поскольку на следующем шаге придется создать код вручную.

  4. В режиме Code (Код) найдите сценарий расчета. Удалите строку, устанавливающую значение переменной basePrice равным значению переменной tourName.

    В ASP код, который следует удалить, выглядит следующим образом: basePrice=Request.Form("tourName"). Находится он в строке 34.

    В ColdFusion код выглядит так: <cfset basePrice = form.tourName>. Он размещен в строке 14.

    В PHP код выглядит таким образом: $basePrice = $_POST['tourName'] ; и расположен в строке 12.

    Эта строка больше не нужна, поскольку теперь стоимость тура передается не из формы, а из базы данных. Вдобавок требуется использовать два вида цен: для взрослых и для детей.

  5. Добавьте две новые строки кода, в которых задается значение двух новых переменных: 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'];

    Все три участка кода создают две новые переменные и устанавливают их значения равными соответствующей стоимости тура (извлеченной из базы данных) для взрослых и для детей.

  6. Только пользователям ASP. Удалите из строки с объявлением переменных (начинается с ключевого слова Dim ) переменную basePrice и добавьте новые переменные basePriceAdult и basePriceChild .

    Поскольку в ASP требуется явно объявлять любую переменную, важно обновлять этот список при каждом создании или удалении переменных.

  7. В строке, содержащей выражение для расчета стоимости тура, замените переменные basePrice на новые.

    Для ASP:

    tourPrice = (numAdult * basePriceAdult) + (numChild * basePriceChild)

    Для ColdFusion:

    <cfset tourPrice = (numAdult * basePriceAdult) + (numChild * basePriceChild)>

    Для PHP:

    $tourPrice = ($numAdult * $basePriceAdult) + ($numChild * $basePriceChild);

    Теперь выражение для расчета стоимости туров включает значения, извлекаемые из базы данных.


  8. Сохраните страницу tourprice_processor.asp и загрузите ее на сервер. На панели Site (Сайт) выберите файл tourprice.asp и нажмите клавишу (F12) для тестирования приложения.

Приложение работает как запланировано. На основе введенной пользователем информации выводится правильная стоимость. Самое лучшее, что для поддержки приложения достаточно обновлять данные в базе данных. Если будет повышена стоимость туров и в базу будет добавлено новое значение, то это немедленно будет учтено и в сценарии расчета. Точно так же приложение будет корректно работать и при удалении существующих или добавлении новых туров.

< Урок 8 || Урок 9: 12345 || Урок 10 >