Отправляет email-рассылки с помощью сервиса Sendsay

PHP за чашкой кофе

  Все выпуски  

PHP за чашкой кофе Чашечка шестая — пойти в театр... или в кино...


Информационный Канал Subscribe.Ru

PHP за чашкой кофе

Чашечка шестая — пойти в театр... или в кино...

PHP за чашкой кофе

Приветствую!

Для начала хочется пояснить одну ошибку, которая стала проявляться у многих подписчиков, когда при попытке открыть скрипт в браузере выводится не то, что должно быть. Вот, например, в третьей чашечке ошибки возникали при проверке в примеров 3, 4 и 5. Что делали многие: создавали файлы cup3.html, cup3.php и cup3_post.php; вписывали в них всё, что нужно, после чего открывали файл cup3.html в браузере, заполняли форму, нажимали кнопку «Проверить», а вместо нормально результата выводилось что-нибудь такое:

Проверка метода GET:
");echo ("Значение скрытого поля hideField равно " . $hideField);?>

В чём же ошибка? Посмотрим, как действует браузер:

  • Открывает HTML-страницу. Адрес к странице примерно таков: диск:\home\php\www\cup3.html
  • (Пользователь заполняет форму и нажимает кнопку «Проверить»)
  • Браузер смотрит: нужно обратиться к файлу cup3.php (или cup3_post.php — смотря какую форму заполнил пользователь), обращается к этому файлу и передаёт ему все необходимые данные из формы.
  • Но! Браузер не умеет обрабатывать PHP-файлы, для этого нужно было запустить Денвер и открыть HTML-страницу с виртуального сервера, и он (браузер) просто выводит PHP-файл в том виде, в котором умеет (то есть не выполняет PHP-скрипты, обрубает части кода, в общем, делает всё неправильно).
Что надо делать: При проверке скриптов все (!) HTML и PHP файлы открываются в браузере по их адресу в виртуальном сервере Денвера, то есть, например, по адресу: http://php/cup3.html, а не диск:\home\php\www\cup3.html

Во всех языках мира есть слово «включатель»,
и только в русском — «выключатель»!
Михаил Задорнов

Сегодня мы поговорим о таком элементе синтаксиса PHP, как переключатели. Не стоит путать его с HTML-тегом <input type="radio">, который тоже создаёт переключатели. Итак,

Оператор switch

Задача: в зависимости от того, что выбирает пользователь, вывести ему необходимый вариант. Смотрим код:

Пример 1. HTML-страница с формой:
<html>
<title>Соцопрос</title>
<body>
<form action="cup6.php">
Введите Вашу оценку по русскому языку:<br>
<input type="text" name="score" value="" maxlength=1><br>
<input type="submit" value="  хм...  ">
</form>
</body>
</html>

А вот код обработчика:

Пример 2. Обработчик формы (файл cup6.php):
<?php
if (!$score) {
echo (
"Вы всё-таки введите оценку-то...");
} elseif (
$score==1) {
echo (
"Ужас!");
} elseif (
$score==2) {
echo (
"Неуд %-(");
} elseif (
$score==3) {
echo (
"Уд...");
} elseif (
$score==4) {
echo (
"Хорошо");
} elseif (
$score==5) {
echo (
"Отлично!");
} else {
echo (
"Интересная оценка...");
}
?>

Думаю, что все вы легко разобрались с кодом и поняли как он действует. Вообще говоря, код этот правильный, и в нём нет ошибок (вроде бы...), но уж очень он неудобен: целая куча условий, уследить где что достаточно тяжело. Что же делать? Сейчас нам и пригодится переключатель switch.

Внешний вид переключателя такой:

Пример 3. Внешний вид переключателя switch:
switch (выражение) {

case
значение1:
// команды, которые выполняются, если выражение = значение1
break; // необязательно
case значение2:
// команды, которые выполняются, если выражение = значение2
break; // необязательно

...

default:
// команды, которые выполняются, если не было найдено
// ни одного совпадения
break; // необязательно
}

Как действует весь этот блок:

  1. Вычисляется значение выражения.
  2. Значение выражения сверяется со значением 1. Если они равны, то выполняется код, находящийся после команды case значение1:
  3. Если не значение выражения не равно значению 1 оно сверяется со значением 2, 4 и так далее.
  4. Если не было найдено ни одного совпадения, то выполняется код блока default.
Блок default не является обязательным: его можно не указывать.
Команда break(); после каждого блока кода нужна для того, чтобы после того, как код был выполнен, все последующие case-ы просто пропускались. Подробнее о команде break(); я рассказывал на прошлом уроке.

Теперь давайте изменим код второго примера на более удобный! Например, такой:

Пример 4. Изменённый код примера 2 (файл cup6.php):
<?php
switch ($score) {
case
0:
echo (
"Вы всё-таки введите оценку-то...");
break;
case
1:
echo (
"Ужас!");
break;
case
2:
echo (
"Неуд %-(");
break;
case
3:
echo (
"Уд...");
break;
case
4:
echo (
"Хорошо");
break;
case
5:
echo (
"Отлично!");
break;
default:
echo (
"Интересная оценка...");
}
?>

Вот так. Просто и удобно. Результаты этой работы изображены на рисунках:

До                                                                   После

Подключение

Зачастую гораздо удобнее разбить код на несколько частей и выводить их в нужных местах. Чтобы включить содержимое одного файла в другой файл мы можем пользоваться двумя командами: require(); и include();

require()

Внешний вид команды:

Пример 6. Внешний вид команды require():
require("имя
файла");

Перед началом выполнения скрипта PHP находит все команды require(); и заменяет их (команды) на содержимое указанного файла.

Замена происходит только один раз перед началом работы скрипта, так что Вы не сможете включить команду require(); в тело цикла!
Файл, который Вы подключаете командой require(); может содержать в себе PHP-код. Этот код будет выполнен.

include()

Внешний вид команды:

Пример 7. Внешний вид команды include():
include("имя файла");

Команда include(); вставляет и выполняет содержимое указанного файла, причём происходит это во время выполнения скрипта каждый раз при встрече команды inlcude();.

Несмотря на явную схожесть, команды require(); и include(); серьёзно различаются: команда require(); выполняется единожды перед началом выполнения скрипта, а команда inlcude(); каждый раз когда встречается в коде и Вы легко можете помещать команду inlcude(); в циклы.

Как это может помочь в жизни: почти на каждом сайте есть такие части страницы, которые не изменяются во всём сайте — это, например, header (заголовок, шапка) сайта и footer («подвал», низ) сайта. Чтобы не печатать их в каждой странице заново стоит вынести их в два отдельных файла (например, header.php и footer.php) и подключать по мере необходимости.

Код такой страницы может выглядеть, например, так:

Пример 8. Подключение заголовка и низа страницы из внешних файлов:
<?php
require("header.php");

// здесь находится текст текущей страницы

require("footer.php");
?>
Использование require() в этом примере предпочтительнее: мы ведь включаем эти файлы только один раз.

require_once() и inlcude_once()

Если Вам нужно сделать так, чтобы некоторый файл включался в код только один раз, то вместо require(); и include(); нужно использовать require_once(); и require_once();

Посмотрите примеры:

Пример 9. Двойное использование include_once():
<?php
include_once("top.php");
// здесь какой-нибудь код
include_once("top.php");
?>

В предыдущем примере файл top.php будет включён в код страницы только один раз, несмотря на то, что в коде есть две команды.

Вот и всё...

Ну вот, вроде бы и всё, что я хотел рассказать Вам на сегодня. Будут какие-нибудь проблемы с PHPпишите мне, я помогу!

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

И вот ещё что: стоит ли вообще задавать подобные «домашние задания»?

Успехов Вам!


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: inet.webbuild.phplearn
Отписаться

В избранное