Самоучитель по креативному веб-дизайну. Книга 3, стр.118

менной $usemame не равно «Konrad», процессор перенаправляет Web-браузер на новую Web-страницу. В обоих примерах, если условие не соблюдается, процессор

пропускает (т. е. не выполняет) операторы, содержащиеся в блоке if. Тем не ме — нее, в большинстве случаев требуется, чтобы при соблюдении условия выполнял —

ся один блок операторов, а при несоблюдении — другой блок. Операторы, кото — рые должны выполнятся в случае, когда условие не соблюдается, указываются в сценарии в блоке else. Формат оператора els e выглядит следующим образом:



if (условие)

оператор;

else

оператор;

В следующем сценарии оператор if-eis e используется для проверки значе —

ния переменной $username. Если значение равно «Konrad», сценарий перенап —

равляет посетителя на страницу weicome. htm, в противном случае будет открыта

страница InvalidUser. htm:



if ($username!= «Konrad»)

{

header(«Location: Weicome. htm») ;

exi t

}

else

{

header(«Location: http://NVBizNet. com/htmlwdtt/InvalidUser. htm»);

exit

}

Помимо применения оператора if-eis e для выполнения одного набора опе- раторов при соблюдении условия и другого набора при несоблюдении условия в некоторых случаях возникает необходимость проверки нескольких связанных ус — ловий или же многократной проверки одного и того же условия. Например, предположим, что сценарий должен определять междугородний телефонный код посетителя путем сравнения значения переменной $cit y с несколькими города — ми, телефонные коды которых сценарию известны. Следующий оператор ис — пользует последовательные операторы if-eis e для иллюстрации упрощенного примера выполняемой процессором обработки:

50 6 Глава 10. РНР4





if ($city == «New York»)

$areaCode = 212;

elseif ($city == «Houston»)

$areaCode = 281;

elseif ($city == «Phoenix»)

$areaCode = 602;

elseif ($city == «Seattle»)

$areaCode = 206;

else

$areaCode = «**UNKNOWN**»;

При выполнении PHP-процессором приведенного выше оператора if сначала сценарий проверяет, является ли город посетителя Нью-Йорком (New York). В случае положительного результата сравнения переменной $areaCode присваива — ется значение 212. Если посетитель живет не в Нью-Йорке, процессор выполня —

ет следующий оператор if-eis e и определяет, является ли местом жительства

посетителя Хыбстон (Houston). Подобная обработка будет проводиться до тех пор, пока PHP-процессор не определит город или дойдет до последнего опера — тора else. Если соответствие для города посетителя найдено не будет, перемен —

Самоучитель по креативному веб-дизайну. Книга 3, стр.119

ной $areacode будет присвоено значение «**UNKNOWN**» (то есть, «НЕИЗВЕСТ — НЫЙ»).

Приведенная в предыдущем примере структура оператора if применяется для выполнения оператора (или группы операторов) при проверке на неравенство (значение переменной меньше, больше или не равно другому значению) или при необходимости проверки значений нескольких связанных между собой пере- менных. Для проверки значения одной переменной на равенство числу или

строке РНР предоставляет более подходящий для этой цели оператор switch. Например, следующий оператор switch более очевиден и элегантен, нежели операторы if и elsei f из предыдущего примера:



switch ($city)

{

case «New York» :

$areaCode • 212;

break;

case «Houston»:

$areaCode = 281;

break;

case «Phoenix»:

$areaCode = 602 ;

break;

case «Seattle»:

$areaCode = 206;

break;

default:

$areaCode = «**UNKNOWN**»;

}

При выполнении оператора switch процессор сравнивает значение выраже — ния, следующего после ключевого слова switch с каждым из значений, находя — щихся после ключевых слов case. Если ни одно из значений, указанных после

Глава 10. РНР4 50 7





case, не совпадает со значением выражения после switch, процессор будет вы — полнять операторы, соответствующие оператору default.

Оператор break в предыдущем примере важен по той причине, что он указы- вает PHP-процессору прекратить выполнение операторов case и перейти к вы- полнению оператора, находящегося непосредственно после switch. Например,

если бы в операторе case «Houston» был пропущен оператор break, перемен — ная $areaCode сначала получила бы значение 281, а затем сравнение бы продол — жалось, и ей было бы присвоено значение 602 .

Тем не менее, в некоторых случаях оператор break может опускаться специ — ально. Предположим, например, что одни и те же операторы должны выпол — няться для нескольких операторов case, как в случае с первыми тремя операто — рами case в следующем примере:

Самоучитель по креативному веб-дизайну. Книга 3, стр.120



switch ($city)

{ ‘ • . ‘

case «Henderson»:

case «Las Vegas»:

case «Pahrump»:

$areaCode = 702;

break;

case «New York» :

$areaCode = 212;

break;

case «Houston»:

$areaCode = 281;

break;

case «Phoenix»:

$areaCode = 602;

break;

case «Seattle»:

$areaCode = 206;

break;

default:

$areaCode • «**UNKNOWN**»;

}

Поскольку Хендерсон (Henderson), Лас-Вегас (Las Vegas) и Пахрамп (Pahrump) имеют один и тот же телефонный код (702), необходимо, чтобы РНР-процессор выполнил оператор присваивания-$areaCode = 702 для каждого из этих трех городов.

Использование логических операторов для проверки одного или нескольких условий

С усложнением сценариев вы сталкиваетесь с ситуациями, когда процессор должен одновременно выполнять несколько сравнений. Например, сценарий мо — жет проверять, находится ли годовой доход посетителя в пределах от $25 000 до

$75 000, либо же определять, имеет ли посетитель хорошую кредитную историю или производит покупку впервые. Для выполнения действий подобного рода

применяются логические И языка РНР (&& или and), а также ИЛИ

50 8 Глава 10. РНР4





(I | или or). При использовании в сценарии операций И и ИЛИ для проверки

нескольких условий, условия помещаются в круглые скобки, как показано на

примере следующего оператора if, использующего логическую операцию ИЛИ для проверки того, является ли посетитель постоянным клиентом ли производит покупку впервые:



if (($hasGoodCredit) j | ($firstTimeHomeBuyer))

оператор;



Аналогично, в следующем примере логическая операция И используется для определения того, находится ли годовой доход посетителя в диапазоне между

$25 000 и $75 000:



if (($income >=25000) && ($income

оператор;



При использовании в сценарии логической операции И, чтобы результат вы — ражения был равен true, все входящие в него выражения должны быть равны true. Если хотя бы одно из условий не соблюдается, результатом всего выраже — ния будет false. Например, если годовой доход посетителя меньше $25 000, ус — ловие в предыдущем операторе if даст в результате false. Аналогично, если до —

ход посетителя больше $75 000, результат также будет равен false. Чтобы условие соблюдалось, годовой доход посетителя должен быть не менее $25 000 и

не более $75 000.

Чтобы выражение с логической операцией ИЛИ давало в результате true, в выражении должно, соблюдаться хотя бы одно условие. Например, если посети- тель имеет хорошую кредитную историю, условие в первом примере будет со — блюдаться. Если посетитель покупает дом впервые, условие также соблюдается. Более того, условие будет соблюдаться и в случае, если посетитель имеет хоро- шую кредитную историю и покупает дом впервые. Единственным случаем, когда составное условие соблюдаться не будет, является ситуация, когда оба условия не соблюдаются.

Самоучитель по креативному веб-дизайну. Книга 3, стр.121



Использование оператора for для повторения операторов заданное количество раз

Одной из наиболее часто встречаемых операций является повторение одного

или нескольких операторов определенное количество раз. В этом случае приме — няется оператор for. Оператор for в языке РНР содержит три выражения и про- стой или составной оператор. Этот оператор обладает следующим синтаксисом:



for (выражение!, выражение2, выражениеЗ) оператор;



PHP-процессор вычисляет значение первого выражения (выражение1) один раз перед началом выполнения цикла. В начале каждой итерации вычисляется значение второго выражения (выражение2). Если значение второго выражения равно true, PHP-процессор выполняет оператор или группу операторов, находя — щихся между фигурными скобками, как в следующем примере:



Глава10.РНР4 509





for (выражение!, выражение2, выражение3)

{

оператор;

оператор;



оператор;

}



Если же значение второго выражения будет равно false, PHP-процессор за — вершит выполнение цикла for. В конце каждой итерации вычисляется значение

выражения выражениеЗ.

В цикле for можно использовать любые выражения языка РНР, причем лю —

бое из трех выражений может быть пустым. Тем не менее, если пустым является второе выражение (выражение2 в приведенном выше синтаксисе), РНР-процессор будет выполнять цикл бесконечно. Таким образом, следующий цикл for с пус —

Самоучитель по креативному веб-дизайну. Книга 3, стр.122

тыми вторым и третьим выражениями будет выполняться до тех пор, пока условный

оператор break в теле цикла (if $count = ю) не приведет к тому, что выполне — ние сценария продолжится с первого оператора, находящегося после цикла for:

for ($count = 1; ;)

{

echo «Count = $count

«;

if ($count ==10) break;

++$count;

}

Рассмотрим еще один пример. Следующий оператор for (с тремя непустыми выражениями) выводит на экран первые десять значений, хранящихся в массиве

$stateNames:



for ($statelndex = 0; $statelndex

echo «\$stateNames[$statelndex] = $stateNames[$statelndex]

«;



Третье выражение увеличивает значение переменной $stateinde x после вы — полнения очередной итерации цикла for. Пока значение второго выражения

($stateinde x РНР-процессор будет выполнять блок операто- ров цикла for. В приведенном примере это единственный оператор echo.

Использование цикла while для повторения выполнения операторов

в случае соблюдения условия



В предыдущем разделе говорилось, что циклы for в языке РНР используются для повторения одного или нескольких операторов определенное количество раз. Для ситуаций, в которых РНР-процессор должен выполнять операторы до тех пор, пока некоторое условие соблюдается, но не обязательно определенное ко —

личество раз, МОЖНО ИСПОЛЬЗОВатЬ ЦИКЛ while. Формат ЦИКЛа while ВЫГЛЯДИТ

следующим образом:



while ($условие)

{

оператор;

оператор;

}

51 0

Глава 10. РНР4





При выполнении цикла while процессор сначала проверяет условие (содер — жащееся в скобках после ключевого слова while). Если условие соблюдается, бу- дут выполняться операторы в блоке цикла while (т. е. операторы, находящиеся в фигурных скобках ({}) после ключевого слова while). После выполнения после — днего оператора цикла процессор снова проверяет условие. Если оно соблюдает — ся, блок операторов выполняется снова, после чего снова проверяется условие и т. д. Когда, в конце концов, условие даст false, процессор продолжит выполнение сценария с оператора, который находится непосредственно после цикла while.

Самоучитель по креативному веб-дизайну. Книга 3, стр.123

Цикл do-while аналогичен циклу while. Он также заставляет процессор вы — полнять операторы при соблюдении условия, но вместо проверки условия перед выполнением операторов (как в случае с циклом while), цикл do-while прове- ряет условие после выполнения операторов. Формат цикла do-while выглядит следующим образом:



do

{

оператор;

оператор;

}

while ($условие);

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



Передача данных HTML-формы РНР-сценарию

Если бы язык РНР не давал возможности получать информацию от посетите —

ля сайта, он бы не добавил практически ничего нового к уже существующему стандарту HTML. В конце концов, вывод на экран таких данных, как дата, время

и количество посетителей, не наделяет Web-страницу особенными динамическим свойствами, которые интересуют посетителей сайта. Конечно, значения перечислен —

ных выше параметров будет меняться, тем не менее, все содержимое Web-страницы, т. е. информация, ради которой посетитель открыл страницу, остается статическим, если вы не дадите посетителю средства, которые позволят ему указать Web-серверу, что он желает увидеть. HTML-формы дают возможность посетителю передавать ин — формацию Web-серверу, а PHP-сценарии обрабатывают полученную (от посетителя)

информацию и на ее основе создают содержимое новой Web-страницы.

Как вы уже знаете из главы 3, после заполнения текстовых полей формы, ус — тановки необходимых переключателей и флажков и нажатия кнопки передачи (Submit) Web-браузер передает результаты заполнения формы Web-серверу. Тем не

менее, Web-сервер «не понимает» данных, переданных ему браузером. Как ре — зультат, сервер должен передать данные (т. е. результаты формы) на обработку другой программой. В прошлом Web-браузеры передавали результаты форм для обработки Perl-сценариям. В настоящее время Web-серверы передают результаты форм не только Perl-сценариям, но и Servlet-сценариям, реализованным на Java

Самоучитель по креативному веб-дизайну. Книга 3, стр.124

(так называемым «сервлетам»), сценариям Active Server Pages (ASP) и, как вы уз — наете из этого практикума, РНР-сценариям.

Глава 10. РНР4 511





Когда вы рассматривали формы (в главе 3), вы изучили различные атрибуты,

которые могут использоваться в дескрипторе

. Для взаимодействия ре —

зультатов. заполнения форм с PHP-сценариями важны два атрибута — actio n и method. Установив значение атрибута actio n в дескрипторе
равным URL — адресу PHP-сценария, вы заставляете Web-сервер передать результаты формы (от — правленные серверу Web-браузером после нажатия посетителем кнопки Submit) PHP-сценарию. Атрибут method устанавливает для Web-браузера способ передачи Web-серверу результатов заполнения формы.

Предположим, например, что имеется Web-страница со следующим определе — нием формы:

ChptlOTipOl. php»

method=»GETM>

Имя:


Фамилия:


E-Mail:








После нажатия посетителем кнопки «Отправить» Web-браузер отправит Web — серверу результаты формы с помощью метода GET. Метод GET говорит Web-бра — узеру присоединить пары имя/значение (т. е., результаты заполнения формы) в конец URL-адреса, по которому Web-сервер передает данные формы (в приведен- ном Примере ЭТО http://www. NVBizNet. com/HWDTT/Chptl0Tip01.php), как ЭТО можно видеть на рис. 10.6 в адресной строке Web-браузера.

В приведенном npnMepeWeb-браузер передает пары имя/значение

«firsName=Konrad», «lastName=King» И «emailAddr=kki@NVBizNet. com».

Часть имени пары имя/значение взята из атрибута name определения эле — мента формы, а часть значения представляет собой данные, введенные в фор — му самим посетителем. Таким образом, в приведенном примере для получе —

ния результата, показанного на рис. 10.6, посетитель ввел «Konrad» в

элементе С именем firstName, «King» — В Элементе С именем lastName И

«kki@NVBizNet. com» — В Элементе С именем emailAddr.



51 2 Глава 10. РНР4





Изучив адресное поле Web-браузера на рис. 10.6, можно увидеть, что метод

GET привел к тому, что браузер отформатировал результаты формы в виде URL — адреса;



http://www. NVBizNet. com/HWDTT/

ChptlOTipOl. php? first^ame=Konrad&las^ame=King&emailAddr=kki(3NVBizNet. com



В адресной отроке содержатся адрес, указанный в атрибуте actio n дескрипто — ра

, знак вопроса (?) и три пары имя/значения:



firstName—Konrad

lastName=King

emailAddr=kki@NVBizNet. com

Пары имя/значения разделены амперсантами (&).

Одним из недостатков использования метода GET является слишком откры — тая передача результатов формы — посетитель имеет возможность просмотреть все результаты в адресной строке Web-браузера. Более того, результаты формы, передаваемые в виде части URL-адреса, фиксируются в журнале браузера, в жур- нальных файлах Web-сервера и в кэш-памяти прокси-сервера (если он использу —

Самоучитель по креативному веб-дизайну. Книга 3, стр.125

ется). Если вы не хотите, чтобы браузер выводил на экран результаты заполне — ния формы, передаваемые Web-серверу, и оставлять копии результатов в местах, где они могут быть кем-то просмотрены, используйте метод POST, как показано

в следующем примере:


method=»POST»>



После того, как посетитель нажмет кнопку отправки формы, которая исполь — зует метод POST, браузер передаст пары имя/значение, представляющие собой результаты заполнения формы, Web-серверу в теле HTML-запроса (а не в каче- стве части URL-адреса). Как результат, в адресном поле браузера будет выводить —

ся только URL-адрес, указанный в атрибуте action. Более того, применение ме —

тода POST позволяет передавать больший объем информации, поскольку для количества символов в URL-адресе, которые браузер передает Web-серверу по ме- тоду GET, установлен определенный предел.

Выбор метода передачи результатов формы (POST или GET) в большой степе —

ни зависит от предпочтений разработчика. Спецификация HTML 4.01 указывает, что метод GET следует применять, если приложения, которое будет обрабаты — вать результаты формы, использует результаты, но не вносит никаких изменений.

Самоучитель по креативному веб-дизайну. Книга 3, стр.126



HTML & Web Design Tips & Techniques





echo «Вы ввели имя: «;

echo «$firstName» ;

echo «Вы ввели фамилию: «;

echo «$lastName» ; echo «Вы ввели адрес e-mail: » ; echo «$emailAddr» ;

?>

Самоучитель по креативному веб-дизайну. Книга 2, стр.1





20 4 Глава 4. Каскадные списки стилей





Из самих названий свойств следует, что свойств letter-spacin g позволяет

установить интервалы между буквами в словах, word-spacing — интервалы между словами, a line-heigh t (как вы уже, наверное, догадались) — интервалы между строками текста. (Фактически, свойство line-heigh t было бы правильнее на —

звать line-spacing, но тестовые процессоры используют термин «высота строк», поэтому для простоты в каскадных списках стилей используется тот же термин.)

Как и в случае со свойством text-indent, для задания значений всех выше пе — речисленных свойств могут использоваться любые единицы измерения, примене — ние которых допускается в каскадных списках стилей. Имейте в виду, что при указании интервалов между буквами и между словами браузер добавляет указан —

ное вами расстояние к тому, которое используется браузером по умолчанию. По — этому для добавления интервала в 5 пикселей между буквами в тексте заголовка уровня 1 можно написать следующее правило:



hl style=»letter-spacing: 5рх»>П1ирокий интервал между буквами в словах



Аналогично, для добавления интервала в 1 пику между словами в цитатах можно использовать следующее правило списков стилей:



cit e {word-spacing:lpc}



Как уже упоминалось, свойство line-heigh t позволяет устанавливать верти —

кальное расстояние между строками текста. Не хотелось бы усложнять, но обыч- ный термин для расстояния между строками — интерлиньяж. Таким образом, свойство line-heigh t позволяет контролировать интерлиньяж. Значение свой — ства line-heigh t можно задавать одним из трех методов: числом, единицей длины, используемой в каскадных списках стилей и в процентах. Web-браузер

добавляет расстояние, указанное вами в свойстве line-height, перед каждой строкой теста.

При указании значения свойства line-heigh t числом или в процентном от — ношении Web-браузер для определения интерлиньяжа будет использовать размер шрифта. Таким образом, при использовании на странице следующего правила браузер вставит между строками текста, выводимого полужирным шрифтом, рас — стояние 25 пунктов:



Полезные ссылки
Случайные записи
  • 09.06.2011">Acer выпустит маленький ноутбук-трансформер
  • 04.03.2011">Руководство по actionscript. часть 5, стр. 046
  • 22.01.2011">Руководство по actionscript. часть 1, стр. 123
  • 21.03.2011">Руководство по actionscript. часть 2, стр. 052
  • 04.12.2012">Седьмой элемент
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.80
  • 04.03.2011">Руководство по actionscript. часть 5, стр. 031
  • 17.03.2011">Руководство по actionscript. часть 2, стр. 150
  • 18.03.2011">Руководство по actionscript. часть 2, стр. 115
  • 24.02.2011">Руководство по actionscript. часть 6, стр. 107
  • 15.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.59
  • 21.03.2011">Руководство по actionscript. часть 2, стр. 054
  • 12.03.2011">Руководство по actionscript. часть 3, стр. 139
  • 08.03.2011">Руководство по actionscript. часть 4, стр. 097
  • 13.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.99
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...