
- •Основы создания информационных ресурсов на языке рнр методические указания
- •Содержание
- •Цель работы
- •1 Общие положения
- •1.1 Основы синтаксиса
- •1.2 Переменные. Константы
- •1.3 Операторы
- •1.4 Типы данных
- •1.4.1 Тип array (массив)
- •1.5 Условные операторы
- •1.5.1 Оператор if
- •If (выражение) блок_выполнения
- •If (выражение) блок_выполнения else блок_выполнения1
- •If (выражение) блок_выполнения;
- •1.5.2 Оператор switch
- •Do {блок_выполнения} while (выражение);
- •For (выражение1;выражение2;выражение3) {блок_выполнения}
- •1.7 Операторы передачи управления
- •1.8 Операторы включения
- •1.9 Формы в html-документах
- •1.10 Тег form – контейнер форм
- •1.11.5 Зависимые переключатели
- •1.11.6 Кнопка отправки формы
- •1.13 Списки выбора. Тег select
- •1.13.1 Списки с единственным выбором
- •1.13.2 Списки множественного выбора
- •1.14 Обработка запросов с помощью рнр
- •2 Задание
- •2.1 Вывод на экран и переменные в рнр.
- •2.2 Работа с условными операторами и операторами цикла в рнр.
- •2.3 Передача параметров по ссылке, передача параметров из формы.
- •2.4 Создание формы для обработки заказов электронного магазина
- •3 Требования к отчету
- •4 Контрольные вопросы
2.3 Передача параметров по ссылке, передача параметров из формы.
Создайте файл test_form.html. Задайте на ней форму:
<form action="forma.php" method="get" >
<br>Сообщение:<br>
<input type="text" name="message">
<br>Имя:<br>
<input type="text" name="name">
<br><input type="submit" value="Обработать данные">
</form>
Создайте файл forma.php для обработки данных формы, который может выглядеть следующим образом:
<?php
echo "Привет, $_REQUEST[name]! <br>";
echo "Твое соообщение $_REQUEST[message].” <br>";
?>
Попробуйте изменить метод GET на метод POST, теперь значения переменных не должны передаваться в открытом виде.
Вместо элемента <input type="text" name="name"> определите на странице выпадающее меню, такое, как приведено ниже:
Измените работу скрипта таким образом, чтобы пользователь мог выбрать имя из списка, ввести приветствие, нажать кнопку "Обработать данные" и получить c помощью обработки переданной переменной в файл forma.php приветствие для выбранного имени.
Измените страницу с формой так, чтобы пользователь мог выбрать приветствие, нажав кнопку зависимой фиксации:
Привет
Здравствуйте
Рад
Вас снова видеть
Добрый
день
Добавьте кнопку для очистки введенных данных.
2.4 Создание формы для обработки заказов электронного магазина
По разобранному примеру создания книжного магазина разработать форму для работы следующих магазинов (по указанию преподавателя):
Магазин автозапчастей
Мебельный магазин
Магазин продуктовый
Магазин игрушек
Магазин бытовой техники
Компьютерный магазин
Аптека
Магазин канцтоваров
Форму заказа для покупателей (orderform.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="scazki" size=3 maxlength=3></td>
</tr>
<tr>
<td> Стихи А.С.Пушкина</td>
<td align=center><input type="text" name="ctixi" size=3 maxlength=3></td>
</tr>
<tr>
<td> Журнал «Бизнес» </td>
<td align=center><input type="text" name="zurnal" size=3 maxlength=3></td>
</tr>
<tr>
<td colspan=2 align=center><input type=submit value="Отправить заказ"></td>
</tr>
</table>
</form>
</body>
</html>
Для обработки формы можно создать файл, аналогичный processorder.php:
<html>
<head>
<title>Книжный магазин – Результаты заказа</title>
</head>
<body>
<h1> КНИЖНЫЙ МАГАЗИН </h1>
<h2> РЕЗУЛЬТАТЫ ЗАКАЗА </h2>
<?
$scazki=$_REQUEST[scazki];
$ctixi =$_REQUEST[ctixi];
$zurnal =$_REQUEST[zurnal];
echo "<p>Заказ обработан ";
echo date("H:i, jS F");
echo "<br>";
echo "<p>Ваш заказ составил:";
echo "<br>";
echo $scazki." сказок Андерсона<br>";
echo $ctixi." Книг со стихами Пушкина<br>";
echo $zurnal." журналов<br>";
$totalqty = 0;
$totalamount = 0.00;
define("zena1", 100);
define("zena2", 10);
define("zena3", 4);
$totalqty = $scazki + $ctixi + $zurnal;
$totalamount = $scazki * zena1 + $ctixi * zena2 + $zurnal * zena3;
$totalamount = number_format($totalamount, 2);
echo "<br>\n";
echo "Всего заказано: ".$totalqty."<br>\n";
echo "На сумму: ".$totalamount."<br>\n";
$taxrate = 0.10; // Налог с продаж 10%
$totalamount = $totalamount * (1 + $taxrate);
$totalamount = number_format($totalamount, 2);
echo " С налогом с продаж: ".$totalamount."<br>\n";
?>
</body>
</html>
По аналогии придумайте и рассчитайте скидки на заказ в зависимости от количества и/или суммы покупки. Добавить в форму код, позволяющий получить информацию о том, какие формы рекламы лучше работают или что-то по смыслу вашей работы. Например:
<td>Как вы нас нашли</td>
<td><select name="find">
<option value = "a">Я регулярный покупатель
<option value = "b">По телевизору
<option value = "c">По телефонному справочнику
<option value = "d">Знакомые рассказали
</select>
</td>
Обработайте полученную информацию в файле processorder.php. Например:
switch($_REQUEST[find]) {
case "a" :
echo "<P>Регулярный покупатель.";
break;
case "b" :
echo "<P>Покупатель увидел рекламу о нас по телевизору.";
break;
case "c" :
echo "<P> Покупатель нашел нас по телефонному справочнику.";
break;
case "c" :
echo "<P>Покупатель узнал о нас от знакомых.";
break;
default :
echo "<P>Мы на знаем как нашел нас покупатель.";
break; }
Добавьте в форму таблицу стоимости доставки заказа в зависимости от расстояния:
<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>
</html>
Добавьте в форму заказа запрос адреса клиента (город, улица, дом, квартира), заведите массив для хранения ближайших городов с расстояниями до них, вычислите в файле processorder.php стоимость доставки заказа клиенту.