11.5.6. Создание условной области

Требуется просто поместить обычный HTML-код внутрь условной конструкции. При выполнении условия HTML-код будет добавлен на страницу. В противном случае, страница отобразится без него.

278. Откройте tourprice.php. Поместите курсор перед открывающим тегом <form> и несколько раз нажмите Enter, чтобы освободить место для нового кода.

<?

if ($_GET['error'] == "notnumeric")

?>

В условном выражении проверяется, присутствует ли в запросе переменная с именем error и если это так, содержит ли она значение notnumeric. При первой загрузке страницы такой переменной нет, так что в результате проверки условия будет возвращено значение false. Однако если страница tourprice.php загружается в процессе проверки формы со страницы tourprice_processor.asp, в запрос добавляется переменная с нужным значением.

238. Между строками, открывающими и закрывающими условие, поместите код, выводящий на страницу HTML.

{

echo "<p>*** Error! Один или более полей пусты или заполнены не цифрами.</p>";

}

279. Сохраните файл tourprice.php, загрузите его на сервер и протестируйте в браузере.

Теперь при попытке ввести в поля формы значения, отличные от числовых, на странице появляется сообщение об ошибке.

Если при тестировании страницы появляется сообщение об ошибке "undefined index", следует исправить код, как показано ниже.

Эта ошибка появляется только в некоторых реализациях PHP. Ее причина заключается в том, что проверка переменной ($_GET['error']) на соответствие определенному значению notnumeric выполняется без первоначального контроля существования переменной. Решение заключается в применении структуры вложенных условных операторов if. Внешнее условие проверяет, существует ли в запросе переменная error. Если существует, то производится проверка равенства переменной значению notnumeric. Но если переменной error в запросе нет, выполнение операции прекращается, что позволяет не учитывать источник возникновения проблемы.

310. Найдите на странице tourprice.php следующий участок кода:

<?php

if ($_GET['error'] == "notnumeric")

{ echo "<p class=\"error\">*** Error! </p>"; }

?>

Замените его на указанный код:

<?php

if (isset($_GET['error']))

{    if ($_GET['error'] == "notnumeric")

{ echo "<p class=\"error\">*** Error! </p>";

} }

?>