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

Справочный материал по основным языкам программирования и верстки сайтов.

Готовая методика создания простых и сложных динамичных сайтов, с использованием PHP и MySQL.

Использование веб-редактора Adobe Dreamweaver в разработке сайтов.

Использование графических редакторов Adobe Flash, Adobe Photoshop, Adobe Fireworks в подготовке веб-графики.

Разработка веб-сайтов под "ключ".

Разработка отдельных фрагментов сайтов, консультации по вопросам верстки веб-страниц и веб-программирования.

Добавление динамического содержимого. Доступ к переменным формы

Добавление динамического содержимого

Основная причина применения языка серверных сценариев — желание предоставить пользователям сайт с динамическим содержимым.

Рассмотрим простой пример. Заменим РНР-код в файле processorder.php на приведенный ниже.

<?php
echo "<p>Заказ обработан в";
echo date('H:i, j F');
echo "</p>";
?>

В этом коде используется встроенная РНР-функция date(), которая сообщает клиенту дату и время обработки его заказа. Значения будут меняться при каждом наполнении сценария.

РНР имеет обширную бибилиотеку функций, которыми можно воспользоваться при разработке веб-приложений. Большинству этих функций нужно передать некоторые данные, чтобы они возвращали соответствующие данные в качестве результатов.

Вызов функции имеет следующий вид:

date('H:i, jS F');

Строка, передаваемая функции данные заключена в круглые скобки. Это значение называется аргументом или параметром функции.

Откройте файл processorder.php.

В окне веб-браузера это будет выглядеть ТАК.

Аргумент, передаваемый функции date(), должен быть строкой формата, который определяет требуемый стиль вывода. Каждая буква в строке представляет часть строки даты и времени суток. Н представляет часы в 24-часовом формате, i — минуты с ведущим нулем, j — день месяца без ведущего нуля, F —полное название месяца.

Доступ к переменным формы

Весь смысл использования формы заказа заключается в получении информации о заказе клиента. Получение подробной информации о том, что клиент ввел с клавиатуры, реализуется в РНР очень просто, тем не менее точный метод зависит от выбора версии РНР и от установок в вашем файле php.ini.

Внутри РНР-сценария к каждому из полей формы можно получить доступ как РНР-переменной, которая имеет то же имя, что и поле формы. В языке РНР переменные легко распознать, так как все они начинаются со знака доллара ($).

К содержимому поля filtr можно получить доступ следующими способами:

$filtr //короткий стиль

$_POST ['filtr'] //средний стиль

$_HTTP_POST_VARS ['filtr'] //длинный стиль

В этом примере и дальше мы будем использовать средний стиль для ссылок на переменные формы, но для простоты использования мы создадим короткие версии применения.

Рассмотрим все возможные методы применения стиля:

  • Короткий стиль ($filtr) удобен в работе, однако требует включения конфигурационной настройки register_globals. Эта настройка начиная версии РНР 4.2.0 отключена по умолчанию.
  • Средний стиль ($_POST ['filtr']) является рекомендованным. Введен в употребление в версии РНР 4.1.0, поэтому не будет работать в более старых версиях.
  • Длинный стиль ($_HTTP_POST_VARS ['filtr']) представляет наиболее подробную форму записи. Признан устаревшим и скорее всего выйдет из употребления. Может быть отключен с помощью директивы register_long_arrays.

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

Средний стиль предусматривает считывание переменных форм из массивов $_POST, $_GET, $_REQUEST. Какой массив использовать, зависит от того, какой метод был избран для передачи формы POST или GET. Кроме того, все данные, передаваемые посредством метода POST или GET, доступны через массив $_REQUEST.

Если форма была отправлена методом POST, то данные помещенные в поле filtr, будут сохранены в $_POST['filtr']; если же форма была передана с помощью метода GET — то в $_GET['filtr']. В том и другом случае данные будут доступны в $_REQUEST{'filtr'].

Эти массивы относятся к категории суперглобальных. Если вы работаете в более старых версиях РНР, то не смодете получить доступ к данным массивам.

При использовании длинного стиля, то доступ к ответу пользователя можно получить через $_HTTP_POST_VARS['filtr'] и $_HTTP_GET_VARS['filtr'].

Для копирования значения одной переменной в другую служит операция присваивания, для обозначения которой в языке РНР используется знак равенства (=).

Создадаим новую переменную с именем $filtr и скопируем в нее содержимое $_POST['filtr'].

$filtr = $_POST['filtr'];

То же самое проделаем с другими данными формы. Создадим для них котроткие переменные.

<?php
//создаем короткие имена переменным
$filtr = $_POST['filtr'];
$filtr_v = $_POST['filtr_v'];
$sparkqty = $_POST['sparkqty'];
?>

Поместим этот блок в самом начале сценария, чтобы потом его было легче найти.

Этот код создает три переменные $filtr, $filtr_v, $sparkqty и помещает в них данные, которые были переданы с помощью метода POST формы.

Выведем сценарий в окно веб-браузера. Для этого вставим в нижнюю часть следующие строки:

echo "<p>Список вашего заказа:</p>";
echo $filtr. " - фильтр масляный <br>";
echo $filtr_v. " - фильтр воздушный<br>";
echo $sparkqty. " - свечи зажигания <br>";

Теперь файл processorder.php будет выглядеть так:

Вернитесь к файлу orderform.php, заполните форму и нажмите кнопку Отправить заказ.

В окне веб-браузера это будет выглядеть ТАК.

Конкатенация строк

В сценарии опратор echo применялся для вывода значений, введенных пользователем в каждое из полей формы, за которым следовал некоторый пояснительный текст. Обратите внимание, что между именем переменной и следующим за ним текстом находится точка (.).

echo $filtr. " - фильтр масляный <br>";

Эта точка и есть операция коктенации строк, которая используется для объединения строк (фрагментов текста) в один текст. Эта операция позволяет избежать записи нескольких операторов echo.

Каждую. переменную, отличную от переменной типа массива, можно поместить в двойные кавычки, после чего применить к ней оператор echo.

echo "$filtr - фильтр масляный <br>";

Этот оператор эквивалентен первому. Оба формата допустимы, и какой из них употреблять — дело вкуса. Такой процесс замены переменной ее содержимым известен как вставка. Обратите внимание, что при вставке должны применяться только двойные кавычки. Нельзя помещать имена переменных в одинарные кавычки в подобных случаях.

Переменные и литералы

Переменные и строки, конкатенацию которых мы осуществляем в каждом из операторов echo, имеют разную природу. Переменные — это символы, применяемые для обозначения данных. Строки — это по сути данные. Когда мы употребляем фрагменты неструктурированных данных в программе, подобной рассматриваемой, мы называем их литералом, чтобы отличить от переменной. $filt — это переменная, т.е символ, который представляет введенные клиентом данные. С другой стороны " - фильтр масляный <br>" — это литерал. Он представляет самого себя.

Для указания строк есть и третий способ. В РНР 4 был введен heredoc-синтаксис(<<<). Этот синтаксис позволяет определять длинные строки аккуратно, указывая маркер конца строки, который будет использоваться для завершения строки. В представленном ниже примере определяется и выводится длинная строка:

echo <<<theEnd

line1

line2

line3

theEnd

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