Для начала хочется пояснить одну ошибку, которая стала проявляться у многих подписчиков, когда при попытке открыть скрипт в браузере выводится не то, что должно быть. Вот, например, в третьей чашечке ошибки возникали при проверке в примеров 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
Задача: в зависимости от того, что выбирает пользователь, вывести ему необходимый вариант. Смотрим код:
Думаю, что все вы легко разобрались с кодом и поняли как он действует. Вообще говоря, код этот правильный, и в нём нет ошибок (вроде бы...), но уж очень он неудобен: целая куча условий, уследить где что достаточно тяжело. Что же делать? Сейчас нам и пригодится переключатель switch.
Внешний вид переключателя такой:
Пример 3. Внешний вид переключателя switch:
switch (выражение) {
case значение1:
// команды, которые выполняются, если выражение = значение1
break; // необязательно
case значение2:
// команды, которые выполняются, если выражение = значение2
break; // необязательно
...
default:
// команды, которые выполняются, если не было найдено
// ни одного совпадения
break; // необязательно
}
Как действует весь этот блок:
Вычисляется значение выражения.
Значение выражения сверяется со значением 1. Если они равны, то выполняется код, находящийся после команды case значение1:
Если не значение выражения не равно значению 1 оно сверяется со значением 2, 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 — пишите мне,
я помогу!
В качестве домашнего задания: сделать простейший калькулятор. В качестве подсказки, вот Вам рисунок:
И вот ещё что: стоит ли вообще задавать подобные «домашние задания»?