Однострочные поля ввода

Формат тега INPUT для создания поля ввода текстовой строки:

<input type=text

        name=имя_параметра

        [value=значение]

        [size=paзмep]

        [maxlen=длина] >

Данный тег создает поле ввода с максимально допустимой длиной текста maxlen и размером в size знакомест. Если задан атрибут value, то в поле будет изначально отображаться указанная строка.

1.11.2 Поле ввода пароля

Формат тега INPUT для создания поля ввода пароля:

<input type=password

        name=имя_параметра

        [value =значение]

        [size=paзмep]

        [maxlen=длина] >

Принцип работы данного тега точно такой же, как и текстового. Разница заключается в том, что вводимая информация в поле не отображается, а заменяется «звездочками».

1.11.3 Скрытое текстовое поле

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

<input type=hidden

         name=имя

         value=значение >

Такие поля передаются серверу, но на Web-странице не отображаются.

1.11.4 Независимые переключатели

Очень часто пользователю, заполняющему форму у себя в браузере, необходимо дать возможность указать свои настройки с помощью выбора определенных значений. Реализовать это можно также с помощью тега INPUT. Для этого необходимо в качестве значения атрибута type указать checkbox:

<input type=checkbox

        name=имя

        value=значение

        [checked] >

Если переключатель был включен на момент нажатия кнопки отправки данных, то сценарию будет передан параметр имя=значение. Переключатель может быть по умолчанию либо включен, либо выключен. Чтобы переключатель был по умолчанию включен, необходимо для него указать атрибут checked. Переключатель checkbox называется независимым, так как его состояние не зависит от состояния других переключателей checkbox. Таким образом, в одной форме может быть одновременно выбрано несколько переключателей.

1.11.5 Зависимые переключатели

Переключатель radio является зависимым переключателем, поскольку на форме может быть только один включенный переключатель типа radio. В качестве имени переключателей воспринимается значение атрибута name. Может быть только один активный переключатель.

<input type= radio

        name=имя

        value=значение

        [checked] >

1.11.6 Кнопка отправки формы

Последними элементами управления типа INPUT являются кнопки. Кнопка отправки служит для отправки сценарию введенных в форму значений. Синтаксис тега INPUT при этом таков:

<input type=submit

        [name=go]

        value=Передать >

Атрибут value определяет текст, который будет написан на кнопке отправки. Атрибут name определяет имя кнопки и является необязательным. Если значение этого атрибута не указывать, то скрипту будут переданы введенные в форму значения и все. Если же атрибут name для кнопки будет указан, то дополнительно к данным формы будет отправлена пара имя=значение от самой кнопки.

1.11.7 Кнопка сброса

Кроме кнопки submit есть еще кнопка reset, которая сбрасывает форму — устанавливает для всех элементов формы значения по умолчанию. Желательно, чтобы на вашей форме была такая кнопка, особенно, если это большая форма. Наличие данной кнопки облегчает очистку формы, если были введены неправильные параметры.

<input type=reset

        value = Cбpoc >

1.11.8 Кнопка отправки с индивидуальным рисунком

Вместо кнопки submit можно использовать рисунок для отправки данных. При щелчке на этом рисунке произойдет то же, что и при нажатии на кнопку submit. Однако, кроме этого, сценарию будут переданы координаты места произведения щелчка на рисунке. Координаты будут переданы в формате: имя.х=коор_Х, имя.у=коор_У.

<input type=image

name=имя

scr=рисунок >

1.11.9 Загрузка файлов

Тег INPUT позволяет реализовывать еще одну возможность в формах. Он позволяет создавать поле выбора файла для отправки. При этом формат тега таков:

<input type=file

        name=имя

        [value=имя файла] >

1.12 Ввод многострочного текста. Тег TEXTAREA

В HTML эта возможность реализуется с помощью тега TEXTAREA. Поле, создаваемое этим тегом, позволяет вводить и отправлять не одну строку, а сразу несколько. Формат тега TEXTAREA таков:

<textarea

   name=имя

   [соls = ширина в символах]

   [rows = высота в символах]

   wrap=тип_nepeнoca

>Текст по умолчанию 

</textarea>

Необязательные параметры cols и rows желательно указывать. Первый из них задает количество символов в строке, а второй — количество строк в области. Атрибут wrap определяет, как будет выглядеть текст в поле ввода:

♦  Virtual — справа от текстового поля выводится полоска прокрутки. Вводимый пользователем текст выглядит разбитым на строки, а символ новой строки вставляется при нажатии клавиши Enter.

♦  Physical — этот тип зависит от браузера и в разных браузерах может вести себя по-разному.

♦  None — текст выглядит в поле в том виде, в котором пользователь его вводит. Если текст не умещается в одну строку, появляется горизонтальная полоска прокрутки.

1.13 Списки выбора. Тег SELECT

1.13.1 Списки с единственным выбором

Довольно часто нам нужно представить какие-нибудь данные в виде списка и предусмотреть возможность выбора в этом списке. В HTML это реализуется в виде списков выбора, создавать которые можно с помощью тега SELECT. Список выбора позволяет выбрать один вариант из множества.

<select name="variants">

<option value="1">Вариант1</option>

<option value="2">Вариант 2</option>

<option value="etc">и т.д.</option>

</select>

Варианты выбора задаются с помощью тегов option. При отправке формы сценарию будет отослано значение value выбранного элемента списка.

Если атрибут size равен 1, то список будет выпадающим. В противном случае список будет занимать n строк и будет «оснащен» полосoй прокрутки. Значение, выбранное в списке по умолчанию, можно указать с помощью атрибута selected для соответствующего тега option. Атрибут value является необязательным. Если его не указать, то будет передана строка, заключенная в тег option.

1.13.2 Списки множественного выбора

С помощью тега SELECT можно создавать и списки множественного выбора. В таких списках можно выбрать не одно, а сразу несколько значений. Чтобы сделать список с множественным выбором, необходимо для тега SELECT указать атрибут multiple. Если пользователь выберет несколько вариантов, то сценарию будут переданы параметры в форме:

имя=значение&имя=значение...&имя=значение

1.14 Обработка запросов с помощью РНР

Внутри PHP-скрипта существует несколько способов получения доступа к данным, переданным клиентом по протоколу http. До версии РНР 4.1.0 доступ к таким данным осуществлялся по именам переданных переменных. Таким образом, если, например, было передано first_name=Nina, то внутри скрипта появлялась переменная $first_name со значением Nina. Если требовалось различать, каким методом были переданы данные, то использовались ассоциативные массивы $HTTP_POST_VARS и $HTTP_GET_VARS, ключами которых являлись имена переданных переменных, а значениями — соответственно значения этих переменных. Таким образом, если пара first_name=Nina передана методом GET, то $HTTP_GET_VARS ["first_name"] ="Nina".

Использовать в программе имена переданных переменных напрямую небезопасно. Поэтому было решено начиная с РНР 4.1.0 задействовать для обращения к переменным, переданным с помощью HTTP-запросов, специальный массив - $_REQUEST. Этот массив содержит данные, переданные методами POST и GET, а также с помощью HTTP cookies. Это суперглобальный ассоциативный массив, т.е. его значения можно получить в любом месте программы, используя в качестве ключа имя соответствующей переменной (элемента формы).

Допустим, мы создали форму для регистрации участников заочной школы программирования. Тогда в файле 1.php, обрабатывающем эту форму, можно написать следующее:

<?

$str="Здравствуйте, $_REQUEST[first_name].$_REQUEST[last_name]! <br>";

$str. = "Вы выбрали для изучения курс по $_REQUEST[kurs]”;

echo $str;

?>

Тогда, если в форму мы ввели имя «Вася», фамилию «Петров» и выбрали среди всех курсов курс по РНР, на экране браузера получим такое сообщение:

Здравствуйте, Вася Петров!

Вы выбрали для изучения курс по РНР

После введения массива $_REQUEST массивы $HTTP_POST_VARS и $HTTP_GET_VARS для однородности были переименованы в $_POST и $_GET соответственно, но сами они из обихода не исчезли из соображений совместимости с предыдущими версиями РНР. В отличие от своих предшественников, массивы $_POST и $_GET стали суперглобальными.

Приведем пример использования этих массивов. Допустим, нам нужно обработать форму, содержащую элементы ввода с именами first_name, last_name, kurs (например, форму form.html, приведенную выше). Данные были переданы методом POST, и данные, переданные другими методами, мы обрабатывать не хотим. Это можно сделать следующим образом:

<?php

$str = "Здравствуйте, ".$_POST["first_name"]." ".$_POST["last_name"]."! <br>";

$str.= "Вы выбрали для изучения курс по ". $_POST["kurs"];

echo $str;

?>

Задание

2.1 Вывод на экран и переменные в РНР.

Измените файл на index.php (с помощью редактора Блокнот) в папке с:\WebServers\home \test1.ru\www и поместите в него следующий код:

<html> <head> <title>Вывод на экран и переменные в РНР</title> </head> <body> <?php   echo "Привет, мир!";?> </body></html>

Запустите программный комплекс Денвер с помощью файла с:\webservers|etc|run.exe, после чего запустите браузер и введите адрес http://localhost/. Ознакомьтесь с системой помощи и перейдите на домен второго уровня: test1.ru. Там вы должны увидеть результат работы файла  файл index.php из папке с:\WebServers\home \test1.ru\www.

Введите в скрипт переменные каждого из перечисленных типов (в браузере на панели инструментов выбрать – Править в блокнот):

<html> <head> <title>Вывод на экран и переменные в PHP</title> </head> <body> <?php  $i = 6; // целое  $d = 4.89; // дробное  $str = "PHP для всех!"; // строка  echo ($i + $d);  echo "<br>Привет, мир! ".$str;?> </body></html>

2.2 Работа с условными операторами и операторами цикла в РНР.

Проделайте пример на работу с условным оператором if (числа задаются в программе) по вариантам, указанным преподавателям:

1. Дано целое число. Если оно является положительным, то прибавить к нему 1; если отрицательным, то вычесть из него 2; если нулевым, то заменить его на 10. Вывести полученное число.

2. Даны три целых числа. Найти количество положительных чисел в исходном наборе.

3. Даны три целых числа. Найти количество положительных и количество отрицательных чисел в исходном наборе.

4. Даны три числа. Вывести наибольшее из них.

5. Даны две переменные вещественного типа: A, B. Перераспределить значения данных переменных так, чтобы в A оказалось меньшее из значений, а в B — большее. Вывести новые значения переменных A и B.

6. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной сумму этих значений, а если равны, то присвоить переменным нулевые значения. Вывести новые значения переменных A и B.

7. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной большее из этих значений, а если равны, то присвоить переменным нулевые значения. Вывести новые значения переменных A и B.

8. Даны три числа. Найти наименьшее из них.

Проделайте пример на работу с оператором цикла(числа задаются в программе) по вариантам, указанным преподавателям:

1. Даны целые числа K и N (N > 0). Вывести N раз число K.

2. Даны два целых числа A и B (A < B). Вывести в порядке возрастания все целые числа, расположенные между A и B (включая сами числа A и B), а также количество N этих чисел.

3. Даны два целых числа A и B (A < B). Вывести в порядке убывания все целые числа, расположенные между A и B (не включая числа A и B), а также количество N этих чисел.

4. Дано вещественное число — цена 1 кг конфет. Вывести стоимость 1, 2, …, 10 кг конфет.

5. Дано вещественное число — цена 1 кг конфет. Вывести стоимость 0.1, 0.2, …, 1 кг конфет.

6. Дано вещественное число — цена 1 кг конфет. Вывести стоимость 1.2, 1.4, …, 2 кг конфет.

7. Даны два целых числа A и B (A < B). Найти сумму всех целых чисел от A до B включительно.

8. Даны два целых числа A и B (A < B). Найти сумму квадратов всех целых чисел от A до B включительно.

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 Создание формы для обработки заказов электронного магазина

По разобранному примеру создания книжного магазина разработать форму для работы следующих магазинов (по указанию преподавателя):

1. Магазин автозапчастей

2. Мебельный магазин

3. Магазин продуктовый

4. Магазин игрушек

5. Магазин бытовой техники

6. Компьютерный магазин

7. Аптека

8. Магазин канцтоваров

Форму заказа для покупателей (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 стоимость доставки заказа клиенту.

        




Требования к отчету

Отчет должен содержать:

· название и цель работы;

· сведения о последовательности её выполнения;

· ответы на контрольные вопросы из п.4;

· основные этапы работы и результаты их выполнения в виде файла на дискете и отчета с текстами созданных программ.



Контрольные вопросы

1. Какие типы данных поддерживает РНР?

2. Какие бывают формы условного оператора? Приведите их вид.

3. Назовите оператор выбора данных. Приведите его общий вид.

4. Какова структура оператора цикла for? Как выполняется цикл for?

5. Какова структура цикла с предусловием? Как выполняется этот цикл?

6. Какова структура цикла с постусловием? Как выполняется этот цикл?

7. Какой оператор цикла позволяет работать с массивами в РНР?

8. Какие операторы передачи управления существуют в РНР и чем они различаются?

9. Какие операторы включения существуют в РНР и чем они различаются?

10.  Какие типы управляющих элементов вы можете назвать?

11.  Какие функции выполняет тег FORM?

12.  Способы использования тега INPUT.

13.  Какие теги позволяют осуществить выбор данных?

14. Как ввести многострочный текст?

15. Как обработать данные, переданные с помощью формы в РНР-сценарии?

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: