Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

php / lab3

.doc
Скачиваний:
39
Добавлен:
07.02.2016
Размер:
84.99 Кб
Скачать

ЛАБОРАТОРНАЯ РАБОТА №3

ОБРАБОТКА ФОРМ

1. Встраивание РНР в HTML

В данной лабораторной работе нам предстоит разобраться, как увязать программирование на HTML с скриптами на РНР. Каким же образом можно достичь взаимодействия программиста и пользователя? Посещая различные сайты, каждый из Вас не раз сталкивался с различными формами и полями для ввода. Некоторые даже пытались разобраться, как все это работает, но непременно натыкались на тот факт, что данные формы нужно как-то обработать.

Пример.

Реализуем форму заказа для фирмы, торгующей автозапчастями. Форма заказа показана на рис.

HTML-код построения этой формы:

<html>

<head>

<title>Автозапчасти</title>

</head>

<body>

<h1>Автозапчасти</h1>

<h2>Форма заказа</h2>

<form action="processorder.php" method=post>

<table border=0>

<tr bgcolor=#cccccc>

<td width=150>Товар</td>

<td width=15>Количество</td>

</tr>

<tr>

<td>Автопокрышки</td>

<td align="center"><input type="text" name="tireqty" size= "3"

maxlength="3"></td>

</tr>

<tr>

<td>Машинное масло</td>

<td align= "center"><input type="text" name="oilqty" size="3"

maxlength="3"></td>

</tr>

<tr>

<td>Свечи зажигания</td>

<td align="center"><input type="text" name="sparkqty" size= "3"

maxlength="3"></td>

</tr>

<tr>

<td colspan="2" align="center"><input type="submit" value= "Отправить

заказ"></td>

</tr>

</table>

</form>

</body>

</html>

Особенности этой формы таковы: обработка после нажатия кнопки «отправить заказ» будет передана файлу processorder.php. Если надо указать другой путь - воспользуйтесь стандартными методами указания пути. Имя первого поля ввода - tireqty, и туда посетитель будет вводить количество автопокрышек. Второе поле имеет имя oilqty, и оно предназначено для ввода количества бутылок машинного масла. Третье поле ввода имеет имя sparkqty и предназначено для ввода количества свечей зажигания.

Теперь перейдем к нашей основной части - обработчику формы, который находится в файле processorder.php. Для обработки формы необходимо создать сценарий, упомянутый в атрибуте action дескриптора FORM и присвоить ему имя processorder.php. Его текст следующий:

<html>

<head>

<title>Автозапчасти</title>

</head>

<body>

<h1> Автозапчасти </h1>

<h2>Результаты заказа</h2>

</body>

</html>

Все те имена которые мы присвоили полям ввода в нашей форме, перешили точно такими-же в скрипт РНР, который указывается в форме как обработчик. Причем значением этих имен (переменных РНР) будет являться то, что посетитель Вашей странички введет в соответствующее поле. Количество автопокрышек окажется в переменной $tireqty, бутылок машинного масла - в $oilqty,а свечей зажигания - в $sparkqty. Любое имя формы становится переменной в обработчике, написанном на РНР.

После щелчка на кнопке „Отправить заказ” на экране Вы получите следующее изображение.

Теперь добавьте в сценарий (файл processorder.php) немного РНР-кода. Под заголовком <h2> введите строки

<?

Echo ‘<p> Заказ обработан.’;

?>

 

Сохраните файл и загрузите его в браузер. На экране Вы получите новое изображение. При просмотре исходного текста в браузере Вы не обнаружите ни одной строки РНР-кода. Это объясняется тем, что интерпретатор РНР осуществил просмотр сценария и заменил его соответствующими строками вывода. Это означает, что из РНР-кода можно построить чистый HTML-код, допускающий просмотр в любом браузере. То есть применяемый пользователем браузер не обязан понимать РНР.

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

До сих пор мы не использовали РНР для каких-то действий, которые невозможно реализовать при помощи HTML. Однако основная причина использования языка создания серверных сценариев – возможность предоставить пользователям сайт с динамическим содержимым (изменяющимся в соответствии с потребностями пользователя или с течением времени).

Заменим РНР-код в файле processorder.php на следующий:

<html>

<head>

<title>Автозапчасти - Результаты заказа</title>

</head>

<body>

<h1>Автозапчасти</h1>

<h2>Результаты заказа</h2>

<?php

echo '<p>Заказ обработан в ';

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

echo '</p>';

?>

</body>

</html>

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

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

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

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

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

$_POST[‘tireqty’] //средний стиль

$HTTP_POST_VARS[‘tireqty’] //длинный стиль

Короткий стиль требует активации признака настройки конфигурации register_globals в файле конфигурации php.ini.

Средний стиль введен в употребление в версии РНР 4.1.0 и не будет работать в более старых версиях.

Длинный стиль гарантирует работу на любом сервере, независимо от выбранной конфигурации.

Включите в Ваш РНР-сценарий следующий код:

<?php

echo '<p>Заказ обработан в ';

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

echo '</p>';

echo '<p>Список вашего заказа: </p>';

echo $tireqty . ' автопокрышек</br>';

echo $oilqty . ' бутылок с маслом</br>';

echo $sparkqty . ' свечей зажигания</br>';

$totalqty = 0;

$totalqty = $tireqty + $oilqty + $sparkqty;

echo 'Заказано товаров: '.$totalqty.'</br>';

$totalamount = 0.00;

define('TIREPRICE',100);

define('OILPRICE',10);

define('SPARKPRICE',4);

$totalamount = $tireqty * TIREPRICE

+ $oilqty * OILPRICE

+ $sparkqty * SPARKPRICE;

echo 'Итого: $'.number_format($totalamount,3).'</br>';

$taxrate = 0.10; // местный налог с продаж составляет 10%

$totalamount = $totalamount * (1 + $taxrate);

echo 'Всего, включая налог с продаж: $'. number_format($totalamount,2).'<br>';

?>

Здесь используются короткие имена переменных.

В сценарии вычисляется итоговая сумма и сумма налога с продажи.

4. Принятие решений с помощью условных операторов

Если посетитель не заказывает запчастей, и случайно нажимает на кнопку «Отправить заказ», имеет смысл выдать сообщение «Вы ничего не заказали на предыдущей странице»:

if ($totalqty==0)

echo ‘Вы ничего не заказали на предыдущей странице!<br>’;

Можно строить и более сложные логические цепочки:

if ($totalqty==0)

{

echo 'Вы ничего не заказали на предыдущей странице!!!<br>';

}

else

{

if($tireqty>0)

echo $tireqty.' автопокрышек<br/>';

if($oilqty>0)

echo $oilqty.' бутылок машинного масла<br/>';

if($sparkqty>0)

echo $sparkqty.' свечей зажигания<br/>';

}

  1. Итерация: повторение действий

Пусть потребовалось создать таблицу, отображающую стоимость доставки товара в таком виде:

HTMK-код, отображающий эту таблицу выглядит следующим образом:

<html>

<body>

<table border="0" cellpadding="3">

<tr>

<td bgcolor="#CCCCCC" align="center">Расстояние</td>

<td bgcolor="#CCCCCC" align="center">Стоимость</td>

</tr>

<tr>

<td align="right">50</td>

<td align="right">5</td>

</tr>

<tr>

<td align="right">100</td>

<td align="right">10</td>

</tr>

<tr>

<td align="right">150</td>

<td align="right">15</td>

</tr>

<tr>

<td align="right">200</td>

<td align="right">20</td>

</tr>

<tr>

<td align="right">250</td>

<td align="right">25</td>

</tr>

</table>

</body>

</html>

Эту же таблицу можно построить, используя цикл while PHP:

<body>

<table border="0" cellpadding="3">

<tr>

<td bgcolor="#CCCCCC" align="center">Расстояние</td>

<td bgcolor="#CCCCCC" align="center">Стоимость</td>

</tr>

<?

$distance = 50;

while ($distance <= 250 )

{

echo "<tr>\n <td align='right'>$distance</td>\n";

echo " <td align='right'>". $distance / 10 ."</td>\n</tr>\n";

$distance += 50;

}

?>

</table>

</body>

Задания.

  1. Создать форму для выполнения арифметических действий (сложение, вычитание, умножение и деление) над двумя числами. Форма содержит 3 поля ввода: для 1-го аргумента, для арифметической операции и для 2-го аргумента. Результат вывести на отдельной странице.

  2. Создать массивы логинов и паролей для доступа к секретной информации. Создать форму для ввода логина и пароля. В случае правильного (неправильного) ввода отобразить соответствующую информацию.

  3. Создать форму для ввода имени человека и года его рождения. Посчитать возраст человека и вывести сообщение, содержащее его имя, возраст и характеристику возраста (0-12 лет – ребенок, 13-16 – подросток и т.д.).

  4. Создать форму для ввода имени человека, его пола и возраста. Посчитать год его рождения и вывести сообщение, содержащее его имя, год рождения и характеристику возраста в зависимости от пола (молодой/молодая, пожилой/пожилая и т.д.).

  5. Создать форму содержащую 2 поля ввода целых чисел. На отдельной странице создать таблицу, количество строк и столбцов которой равно введенным числам.

Соседние файлы в папке php