Иллюстрированный самоучитель по PostgreSQL

Условная логика

Вложение логических тегов

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

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

В листинге 13.15 приведен пример вложения нескольких логических тегов в один тег <if> верхнего уровня.

Листинг 13.15. Вложение логических тегов.

<lхр>
<if answer> <strong>You have supplied an answer!</strong><br />
<if answer="12">
Your answer is correct!<br />
</lf>
<ifnot answer="12">
Your answer of <putvar name="answer"> .though, is incorrect.<br />
</ifnot>
<if answer="12" cheatcode>
You appear to be cheating, however.
</if>
</if>
</lxp>

В листинге 13.15 первый тег <if> проверяет, задано ли значение аргумента answer. Если значение отсутствует, весь внутренний блок не обрабатывается.

Второй тег <if> проверяет, содержит ли переданный аргумент answer значение 12. Если условие выполняется, блок тега <if> обрабатывается, а если нет – не обрабатывается.

Следующий тег <ifnot> проверяет, отличен ли аргумент answer от 12. В этом случае обрабатывается внутренний блок тега <ifnot>.

Наконец, последний тэг <if> в листинге 13.15 проверяет, содержит ли аргумент answer значение 12 и был ли при этом передан аргумент cheatcode. Если аргумент равен 12, а переменная cheatcode существует, обрабатывается блок последнего тега <if> (в данном примере он просто выводит сообщение).

Теги < ifcookie> и <ifnotcookie>

Теги <ifcookie> и <ifnotcookie> аналогичны тегам <if> и <ifnot>, с одним принципиальным различием: при проверке используются не переменные, хранимые в памяти, а файлы cookie, хранимые в некотором домене и доступные через браузер.

В листинге 13.16 блок LXP строит персональное приветствие для пользователя, если в его браузере хранится cookie с именем username.

Листинг 13.16. Теги <ifcookie> и <ifnotcookie>.

<lхр> <ifcookie username>
Welcome back. <putcookie name="username">.<br />
</ifcookie>
<ifnotcook1e username>
<include src="login.php" />
</ifnotcookie>
</lxp>

Если cookie с именем username не существует, выводится стандартная страница для ввода пользовательских данных, реализованная в документе РНР. Документ воспроизводится посредством подзапроса Apache (см. подраздел "Включение внешних источников данных" в разделе "Включение данных").

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.