Урок 7: Создание приложения для расчета стоимости путешествий
Создание условной области
Использование участка HTML-кода, который отображается в зависимости от ситуации, может показаться необычным, тем не менее, навыки, полученные в этом уроке, делают это возможным. Требуется просто поместить обычный HTML-код внутрь условной конструкции. При выполнении условия HTML-код будет добавлен на страницу. В противном случае, страница отобразится без него.
-
Откройте tourprice.asp . Поместите курсор перед открывающим тегом <form> и несколько раз нажмите (Enter)/(Return), чтобы освободить место для нового кода.
Открывающий тег <form> находится внутри строки 38. Условная область, отображающаяся при перезагрузке страницы, в этом месте будет особенно заметна.
-
Как и в предыдущем упражнении, начните с написания условия.
Для ASP:
<% If Request.QueryString("error") = "notnumeric" Then End If %>
Для ColdFusion:
<cfif url.error is "notnumeric"> </cfif>
Для PHP:
<?php if ($_GET['error'] == "notnumeric") ?>
В условном выражении проверяется, присутствует ли в запросе переменная с именем error и если это так, содержит ли она значение notnumeric. При первой загрузке страницы такой переменной нет, так что в результате проверки условия будет возвращено значение false. Однако если страница tourprice.asp загружается в процессе проверки формы со страницы tourprice_processor.asp, в запрос добавляется переменная с нужным значением.
-
Между строками, открывающими и закрывающими условие, поместите код, выводящий на страницу HTML.
Для ASP:
Response.Write("<p>*** Error! One or more fields was left blank or contained a non-numeric character.</p>")
Для ColdFusion:
<cfoutput><p>*** Error! One or more fields was left blank or contained a non-numeric character.</p></cfoutput>
Для PHP:
{ echo "<p>*** Error! One or more fields was left blank or contained a non-numeric character.</p>"; }
Функции Response.Write, <cfoutput> и echo применяются для вывода статического или динамического кода. До этого на страницу выводился только динамический код, а статический код тоже может использоваться в этих функциях как отдельно, так и в сочетании с динамическим.
-
Только пользователям ColdFusion. Поместите все условное выражение <cfif> внутри другого условного выражения <cfif> , чтобы первое выражение обрабатывалось только в том случае, если переменная запроса действительно существует.
<cfif isDefined("url.error")> <cfif url.error is "notnumeric"> <cfoutput><p>*** Error! One or more fields was left blank or contained a non-numeric character.</p></cfoutput> </cfif> </cfif>
Функция isDefined работает по тому же принципу, что и isNumeric, только вместо того, чтобы проверять, является ли значение числовым, она проверяет наличие того или иного параметра.
В данном случае добавление кода необходимо, поскольку ColdFusion подразумевает, что если в коде производится проверка переменной ( <cfif url.error = "notnumeric"> ), следовательно, эта переменная существует. Если переменной на самом деле нет, то при ее проверке ColdFusion выдаст сообщение об ошибке. Переменная error появляется только в том случае, если страница загружается в результате перевода пользователя со страницы tourprice_processor.cfm при проверке правильности заполнения формы. Таким образом, при первой загрузке страницы непременно появится безобразное сообщение об ошибке. Для решения этой проблемы вводится дополнительный код, проверяющий, действительно ли существует переменная url.error. Если нет, ColdFusion игнорирует остальной код, проверяющий, является ли значение числовым. Если переменная url.error существует, ColdFusion продолжает проверку.
В этом плане ASP и PHP отличаются от ColdFusion. Если переменная querystring.error не определена, интерпретатор делает вывод, что ее значение не может быть notnumeric и просто продолжает обработку кода страницы.
-
Сохраните файл tourprice.asp , загрузите его на сервер и протестируйте в браузере.
Теперь при попытке ввести в поля формы значения, отличные от числовых, на странице появляется сообщение об ошибке.
Осталась одна проблема – сообщение не слишком заметно.