Помощь в написании студенческих работ
Антистрессовый сервис

Основы создания информационных ресурсов на языке PHP

МетодичкаПомощь в написанииУзнать стоимостьмоей работы

В первом случае формируется цикл по всем элементам массива, заданного переменной $аггау. На каждом шаге цикла значение текущего элемента массива записывается в переменную $value, и внутренний счетчик массива передвигается на единицу (так что на следующем шаге будет виден следующий элемент массива). Внутри блока_выполнения значение текущего элемента массива может быть получено с помощью переменной… Читать ещё >

Основы создания информационных ресурсов на языке PHP (реферат, курсовая, диплом, контрольная)

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ Уфимский государственный авиационный технический университет Кафедра экономической информатики ОСНОВЫ СОЗДАНИЯ ИНФОРМАЦИОННЫХ РЕСУРСОВ НА ЯЗЫКЕ РНР МЕТОДИЧЕСКИЕ УКАЗАНИЯ к лабораторным работам по курсу «Мировые информационные ресурсы»

Уфа 2006

Составитель: Е. И. Филосова ББК УДК 519.682

Методические указания к лабораторным работам по курсу «Мировые информационные ресурсы» для студентов специальности 80 801 «ПРИКЛАДНАЯ ИНФОРМАТИКА (В ЭКОНОМИКЕ)» / Уфимский государственный авиационный технический университет; Составитель Е. И. Филосова, Уфа, 2006 — 24с.

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

Ил. 0, табл. 7, Библиогр.: 7 назв.

© Уфимский государственный авиационный технический университет, 2006

1. Общие положения

1.1 Основы синтаксиса

1.2 Переменные. Константы

1.3 Операторы

1.4 Типы данных

1.4.1 Тип array (массив)

1.5 Условные операторы

1.5.1 Оператор if

1.5.2 Оператор switch

1.6 Циклы

1.6.1 Цикл с предусловием while

1.6.2 Цикл с постусловием do… while

1.6.3 Цикл со счетчиком for

1.6.4 Цикл перебора массива foreach

1.7 Операторы передачи управления

1.8 Операторы включения

1.9 Формы в HTML-документах

1.10 Тег FORM — контейнер форм

1.11 Тег INPUT и способы его использования

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2. Задание

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

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

2.3 Передача параметров по ссылке, передача параметров из формы

2.4 Создание формы для обработки заказов электронного магазина

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

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

1. Общие положения

Цель работы — овладеть основными приемами создания и обработки web-документов с помощью языка серверного скриптования PHP.

РНР (официальное название «PHP: Hypertext Preprocessor») лучше всего охарактеризовать как работающий на стороне сервера встроенный язык Web-сценариев, позволяющий разработчикам быстро и эффективно строить динамические web-приложения.

1.1 Основы синтаксиса

РНР может встраивается в HTML-код следующим способом: первый вариант , сокращенный вариант .

Программа на РНР — это набор команд (инструкций). В РНР инструкции разделяются точкой с запятой.

echo «Привет, это PHP-скрипт!» ;

?>

Часто при написании программ возникает необходимость делать какие-либо комментарии к коду, которые никак не влияют на сам код, а только поясняют его. РНР поддерживает несколько видов комментариев: в стиле Си, C++ и оболочки Unix. Символы // и # обозначают начало однострочных комментариев, /* и */ - соответственно начало и конец многострочных комментариев.

Важным элементом каждого языка являются переменные, константы и операторы, применяемые к этим переменным и константам.

1.2 Переменные. Константы

Переменная в РНР обозначается знаком доллара, за которым следует ее имя. Например: $my_var. Имя переменной чувствительно к регистру, т. е. переменные $my_var и $My_var различны.

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

Для хранения постоянных величин, т. е. таких величин, значение которых не меняется в ходе выполнения скрипта, используются константы. Для определения константы существует специальная функция define (). Ее синтаксис таков:

define («Имя_константы», «Значение_константы», [Нечувствительность_к_регистру])

По умолчанию имена констант чувствительны к регистру. Для каждой константы это можно изменить, указав в качестве значения аргумента Нечувствительность_к_регистру значение True. Существует соглашение, по которому имена констант всегда пишутся в верхнем регистре. Получить значение константы можно, указав ее имя. В отличие от переменных, не нужно предварять имя константы символом $. Кроме того, для получения значения константы можно использовать функцию constant () с именем константы в качестве параметра.

1.3 Операторы

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

Таблица 1 — Арифметические операторы

Обозначение

Название

Пример

Сложения

$а + $b

;

Вычитание

$а — $b

*

Умножение

$a*$b

Деление

$а / $b

%

Остаток от деления

$а % $b

*

Конкатенация (сложение строк)

$с = $а.$b

Таблица 2 — Операторы присваивания

Обозначение

Описание

Пример

=

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

$а =($b = 4) +5;

($а будет равна 9, $b четырем)

+=

Прибавляет к переменной число и затем присваивает ей полученное значение

$а += 5; (то же, что и $а = $а + 5;)

.=

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

$b = «Привет» ;

$b.= «всем» ;

В результате:

$b="Привет всем"

Таблица 3 — Логические операторы

Обозначение

Название

Пример

Описание

аnd

&&

И

$а and $b

$а && $b

$а и $b истинны (True)

оr

||

Или

$а or $b

$а || $b

Хотя бы одна из переменных $а или $b истинна (возможно, что и обе)

хоr

Исключающее или

$а хоr $b

Только одна из переменных истинна.

!

Инверсия (NOT)

!$а

Если $а=Тruе, то !$a=False и наоборот

Таблица 4 — Операторы сравнения

Обозначение

Название

Пример

Описание

==

Равенство

$а == $b

Значения переменных равны

===

Эквивалентность

$а === $b

Равны значения и типы переменных

≠, <>

Неравенство

$а ≠ $b, $а <>$b

Значения переменных не равны

≠=

Неэквивалентность

$а ≠ = $b

Переменные не эквивалентны

<

Меньше

$а<$b

>

Больше

$а>$b

<=

Меньше или равно

$а <= $b

>=

Больше или равно

$а >= $b

Таблица 6 — Операторы инкремента и декремента

Обозначение

Название

Описание

Пример

++$а

Пре-инкремент

Увеличивает $а на единицу и возвращает $а

$а=4;

echo «Должно быть 5:» .++$а; echo «Должно быть 5:» .$а++;

echo «Должно быть 6:» .$а;

echo «Должно быть 5:» .—$а;

echo «Должно быть 5:» .$а—;

echo «Должно быть 4:» .$а;

?>

$а++

Пост-инкремент

Возвращает $а, затем увеличивает $а на единицу

—$а

Пре-декремент

Уменьшает $а на единицу и возвращает $а

$а-;

Пост-декремент

Возвращает $а, затем уменьшает $а на единицу

1.4 Типы данных

РНР поддерживает восемь простых типов данных. Четыре скалярных типа:

boolean (логический). Этот простейший тип выражает истинность значения, т. е. переменная этого типа может иметь только два значения — истина TRUE или ложь FALSE;

integer (целый). Этот тип задает число из множества целых чисел. Целые могут быть указаны в десятичной, шестнадцатеричной или восьмеричной системе счисления, по желанию с предшествующим знаком «-» или «+». Если используется восьмеричная система счисления, нужно предварить число 0 (нулем), для использования шестнадцатеричной системы нужно поставить перед числом 0х;

float (с плавающей точкой);

string (строковый). Строка — это набор символов. В РНР символ — это то же самое, что байт, это значит, что существует ровно 256 различных символов. Строка в РНР может быть определена с помощью одинарных или двойных кавычек. Самым важным свойством строк в двойных кавычках является обработка переменных.

Два смешанных типа:

* array (массив);

* object (объект).

И два специальных типа:

* resource (ресурс);

* NULL.

В РНР не принято явное объявление типов переменных.

1.4.1 Тип array (массив)

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

Определение при помощи array ()

array ([key] => value, [keyl] => valuel, …)

Языковая конструкция array () принимает в качестве параметров пары ключ => значение, разделенные запятыми. Символ => устанавливает соответствие между значением и его ключом. Ключ может быть как целым числом, так и строкой, а значение может быть любого имеющегося в РНР типа. Числовой ключ массива часто называют индексом. Индексирование массива в РНР начинается с нуля. Значение элемента массива можно получить, указав после имени массива в квадратных скобках ключ Если для элемента ключ не задан, то в качестве ключа берется максимальный числовой ключ, увеличенный на единицу. Если указать ключ, которому уже было присвоено какое-то значение, то оно будет перезаписано. Если максимальный ключ — отрицательное число, то следующим ключом массива будет ноль (0).

$аrr = аrrау (5 => 43, 32, 56, «b» => 12);

$arr1 = array (5 => 43, 6 => 32, 7 => 56, «b» => 12);

?>

Для работы с массивами можно применять следующие функции:

Таблица 7 — Функции работы с массивами

Название

Обозначение

Пример

range

Заполняет список целыми числами

$arr=range (4,9);

// теперь $arr = array (4, 5, 6, 7, 8, 9);

array_reverse

Расстановка элементов массива в обратном порядке

$arr = array_reverse ($arr);

// теперь $arr = array (9, 8, 7, 6, 5, 4);

shuffle

Перемешивание элементов массива

shuffle ($A); /* теперь в массиве arr числа 4,5,6,7,8,9 в случайном порядке*/

sort

Сортировка массива по возрастанию

$A = array («One», «Two», «Tree», «Four»);

sort ($A);

// выводит «0:Four 1: One 2: Tree 3: Two «

rsort

Сортировка массива по убыванию

asort ($A);

// выводит «0:Two 1: Tree 2: One 3: Four «

asort

Сортировка ассоциативного массива по возрастанию

$A=array («a» =>" Zero" ," b" =>" Weapon" ," c" =>" Alpha" ," d" =>" Processor"); asort ($A);

//c=>Alpha d=>Processor b=>Weapon a=>Zero

arsort

Сортировка ассоциативного массива по убыванию

arsort ($А);

// a=>Zero b=>Weapon d=>Processor c=>Alpha

ksort

Сортировка массива по возрастанию ключей

ksort ($A);

// a=>Processor b=>Alpha c=>Weapon d=>Zero

krsort

Сортировка массива по убыванию индексов

krsort ($A);

// d=>Zero c=>Weapon b=>Alpha a=>Processor

unset

удаляет элемент массива

unset ($arr[l]); //теперь $arr = array (5, 6, 7, 8, 9);

reset

Производит сброс курсора массива

Устанавливает внутренний курсор массива на его начало и возвращает значение начального элемента

end

Производит перенос курсора в конец массива

Устанавливает внутренний курсор массива на последний элемент и возвращает значение начального элемента

next

Производит перенос курсора вперед

Возвращает значение элемента, на котором в данный момент находится курсор, и перемещает курсор массива на следующий элемент

Название

Обозначение

Пример

prev

Производит перенос курсора назад

Возвращает значение элемента, на котором в данный момент находится курсор, и перемещает курсор массива на предыдущий элемент

current

Определение текущего элемента массива

Возвращает значение элемента, на котором в данный момент находится курсор массива, при этом не сдвигая курсор

key

Возвращает индекс текущего элемента массива

array_keys

Возвращает список из ключей массива

$arr = array (0 => 100, «color» => «red», 15);

array_keys ($arr); //возвратит array (0, «color», 1)

array_values ()

Переиндексирует массив

Sizeof count

Возвращает число элементов массива

array_sum

Возвращает сумму всех элементов массива

$arr = array (2,4,6,7);

echo «Сумма: «.array_sum ($arr); // Сумма: 19

array_slice

Получение части массива

$input = array («a», «b», «c», «d», «e»);

$output = array_slice ($input, 2); // «c», «d», «e»

$output = array_slice ($input, 2, -1); // «c», «d»

$output = array_slice ($input, 0, 3);// «a», «b», «c»

array_search

in_array

Поиск значения в массиве

If (in_array («b»,$input)) echo «Да»;

$k= array_search («b»,$input); // выведет 1

array_splice

Удаляет часть массива

1.5 Условные операторы

1.5.1 Оператор if

Этот оператор позволяет выполнять фрагменты кода в зависимости от условия. Структуру оператора if можно представить следующим образом:

if (выражение) блок_выполнения Оператор else расширяет if на случай, если проверяемое в if выражение является неверным, и позволяет выполнить какие-либо действия при таких условиях. Структурa оператора if, расширенного с помощью оператора else:

if (выражение) блок_выполнения else блок_выполнения1

Elseif — это комбинация else и if. Как и else, он расширяет if для выполнения различных действий в том случае, если условие, проверяемое в if, неверно. Но в отличие от else, альтернативные действия будут выполнены, только если elseif — условие является верным. Структуру оператора if, расширенного с помощью операторов else и elseif, можно представить следующим образом:

if (выражение) блок_выполнения;

elseif (выражение1) блок_выполнения1;

else блок_выполненияN;

Пример

$names = array («Иван» ," Петр" ," Семен");

if ($names[0]=="Иван")

{

echo «Привет, Ваня!» ;

$num = 1;

}

if ($num) echo «Иван первый в списке!» ;

if ($num > 100) echo «Эта строчка не появится на экране, так как условие не выполнено» ;

?>

1.5.2 Оператор switch

В зависимости от того, какое значение имеет переменная, он переключается между различными блоками действия. Структуру switch можно записать следующим образом:

switch (выражение или переменная) {

case значение1:

блок_действий1;

break;

case значение2:

блок_действий2;

break;

default:

блок_действий_по_умолчанию;

}

Пример

$names = array («Иван» ," Петр" ," Семен");

switch ($names[0]){

case «Иван» :

echo «Привет, Ваня!» ;

break;

case «Петр» :

echo «Привет, Петя!» ;

break;

case «Семен» :

echo «Привет, Сеня!» ;

break;

default:

echo «Привет, $names[0]» ;

}

?>

}

1.6 Циклы

1.6.1 Цикл с предусловием while

Структура:

while (выражение) { блок_выполнения }

Пример. Эта программа напечатает все четные цифры:

$i = 1;

while ($i < 10) {

if ($i % 2 == 0) print $i; // печатаем цифру, если она четная

$i++; // увеличиваем $i на единицу

}

?>

1.6.2 Цикл с постусловием do… while

Структура:

do {блок_выполнения} while (выражение);

Пример.

//на то что условие цикла не выполнено

$i = 12;

do {

if ($i % 2 == 0) print $i; // если число четное, то печатаем его

$i++; // увеличиваем число на единицу

} while ($i<10)

?>

1.6.3 Цикл со счетчиком for

Структура:

for (выражение1;выражение2;выражение3) {блок_выполнения}

Все четные цифры можно вывести с использованием цикла for таким образом:

for ($i=0; $i<10; $i++) {

if ($i % 2 == 0) print $i; // печатаем четные числа

}

?>

1.6.4 Цикл перебора массива foreach

Синтаксис:

foreach ($array as $value) {блок_выполнения}

либо

foreach ($array as $key => $value) {блок_выполнения}

В первом случае формируется цикл по всем элементам массива, заданного переменной $аггау. На каждом шаге цикла значение текущего элемента массива записывается в переменную $value, и внутренний счетчик массива передвигается на единицу (так что на следующем шаге будет виден следующий элемент массива). Внутри блока_выполнения значение текущего элемента массива может быть получено с помощью переменной $value. Выполнение блока_выполнения происходит столько раз, сколько элементов в массиве $ array.

Вторая форма записи в дополнение к перечисленному выше на каждом шаге цикла записывает ключ текущего элемента массива в переменную $кеу, которую тоже можно использовать в блоке_выполнения. Когда foreach начинает исполнение, внутренний указатель массива автоматически устанавливается на первый элемент.

Пример.

$names = array («Иван» ," Петр" ," Семен");

foreach ($names as $val) { // выведет всем приветствие

echo «Привет, $val

" ;

}

foreach ($names as $k => $val) {

// кроме приветствия, выведем номера в списке, т. е. ключи

echo «Привет, $val ! Ты в списке под номером $k

" ;

}

?>

1.7 Операторы передачи управления

Оператор break заканчивает выполнение текущего цикла, будь то for, foreach, while, do… while или switch. Break может использоваться с числовым аргументом, который говорит, работу скольких управляющих структур, содержащих его, нужно завершить.

Оператор continue позволяет пропустить дальнейшие инструкции из блока_выполнения любого цикла и продолжить выполнение с нового круга. Continue можно использовать с числовым аргументом, который указывает, сколько содержащих его управляющих конструкций должны завершить работу.

1.8 Операторы включения

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

include 'имя_файла'; или include $file_name; или include («имя_файла») ;

Require также позволяет включать в программу и исполнять какой-либо файл. Основное отличие require и include заключается в том, как они реагируют на возникновение ошибки. Include выдает предупреждение, и работа скрипта продолжается. Ошибка в require вызывает фатальную ошибку работы скрипта и прекращает его выполнение.

1.9 Формы в HTML-документах

Формы предназначены для отправки информации CGI-приложению, то есть нашему сценарию. Форма в HTML-документе реализуется тегом-контейнером FORM, в котором задаются все управляющие элементы — поля ввода, кнопки и т. д. Простая форма ввода имени:

Имя:

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

HTML 4.01 определены следующие типы управляющих элементов:

¦ Кнопки — задаются с помощью элементов BUTTON и INPUT. Различают:

кнопки отправки — при нажатии на них осуществляют отправку формы серверу;

кнопки сброса — при их нажатии устанавливают управляющие элементы в первоначальные значения;

прочие кнопки — кнопки, для которых не указано действие, выполняемое по умолчанию при их нажатии.

¦ Зависимые переключатели (переключатели с зависимой фиксацией) — задаются элементом INPUT и представляют собой переключатели «вклвыкл». Если несколько зависимых переключателей имеют одинаковые имена, то они являются взаимоисключающими.

¦ Независимые переключатели (переключатели с независимой фиксацией) — задаются элементом INPUT и представляют собой переключатели «вклвыкл», но в отличие от зависимых, независимые переключатели могут принимать и изменять свое значение независимо от остальных переключателей.

¦ Меню — реализуется с помощью элементов SELECT, OPTGROUP и OPTION. Меню предоставляют пользователю список возможных вариантов выбора.

¦ Ввод текста — реализуется элементами INPUT, если вводится одна строка, и элементами TEXTAREA — если несколько строк. В обоих случаях введенный текст становится текущим значением управляющего элемента.

¦ Выбор файлов — позволяет вместе с формой отправлять выбранные файлы, реализуется HTML-элементом INPUT.

¦ Скрытые управляющие элементы — создаются управляющим элементом INPUT

Форма в HTML-документе реализуется тегом-контейнером FORM.

1.10 Тег FORM — контейнер форм

Как уже говорилось, форма в HTML-документе реализуется тегом-контейнером FORM. Этот тег своими атрибутами указывает адрес сценария, которому будет послана форма, способ пересылки и характеристику данных, содержащихся в форме. Начальный и конечный теги FORM задают границы формы, поэтому их указание является обязательным. Атрибуты тега FORM:

¦ action — единственный обязательный атрибут. В качестве его значения указывается URL-адрес запрашиваемой CGI-программы, которая будет обрабатывать данные, содержащиеся в форме.

¦ method — определяет метод HTTP, используемый для пересылки данных формы от браузера к серверу. Атрибут METHOD может принимать два значения: get или post.

¦ enctype — необязательный атрибут. Указывает тип содержимого формы, используемый для определения формата кодирования при ее пересылке.

1.11 Тег INPUT и способы его использования

Элемент INPUT является наиболее употребительным тегом, т.к. с его помощью реализуются основные функции формы. Он позволяет создавать внутри формы поля ввода строки текста, имени файла, пароля и др.

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

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

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

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

[size=paзмep]

[maxlen=длина] >

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

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

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

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

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

[size=paзмep]

[maxlen=длина] >

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

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

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

name=имя

value=значение >

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

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

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

name=имя

value=значение

[checked] >

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

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

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

name=имя

value=значение

[checked] >

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

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

[name=go]

value=Передать >

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

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

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

value = Cбpoc >

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

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

name=имя

scr=рисунок >

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

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

name=имя

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

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

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

name=имя

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

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

wrap=тип_nepeнoca

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

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

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

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

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

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

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

Довольно часто нам нужно представить какие-нибудь данные в виде списка и предусмотреть возможность выбора в этом списке. В HTML это реализуется в виде списков выбора, создавать которые можно с помощью тега 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]!

«;

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

echo $str;

?>

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

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

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

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

$str = «Здравствуйте, „.$_POST[“ first_name» ]. «„.$_POST[“ last_name» ]. «!

" ;

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

echo $str;

?>

2. Задание

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

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

echo «Привет, мир!» ;

?>

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

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

оператор предусловие запрос документ

$i = 6; // целое

$d = 4.89; // дробное

$str = «PHP для всех!»; // строка

echo ($i + $d);

echo «

Привет, мир! «.$str;

?>

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. Задайте на ней форму:

Сообщение:

Имя:

Создайте файл forma. php для обработки данных формы, который может выглядеть следующим образом:

echo «Привет, $_REQUEST[name]!

" ;

echo «Твое соообщение $_REQUEST[message]. »

" ;

?>

Попробуйте изменить метод GET на метод POST, теперь значения переменных не должны передаваться в открытом виде.

Вместо элемента определите на странице выпадающее меню, такое, как приведено ниже:

Измените работу скрипта таким образом, чтобы пользователь мог выбрать имя из списка, ввести приветствие, нажать кнопку «Обработать данные» и получить c помощью обработки переданной переменной в файл forma. php приветствие для выбранного имени.

Измените страницу с формой так, чтобы пользователь мог выбрать приветствие, нажав кнопку зависимой фиксации:

Привет Здравствуйте Рад Вас снова видеть Добрый день Добавьте кнопку для очистки введенных данных.

2.4 Создание формы для обработки заказов электронного магазина

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

Магазин автозапчастей Мебельный магазин Магазин продуктовый Магазин игрушек Магазин бытовой техники Компьютерный магазин Аптека Магазин канцтоваров Форму заказа для покупателей (orderform.html) книжного магазина можно представить следующим образом:

КНИЖНЫЙ МАГАЗИН

Форма заказа

НазваниеКоличество
Сказки Андерсона
Стихи А.С.Пушкина
Журнал «Бизнес»

Для обработки формы можно создать файл, аналогичный processorder. php:

КНИЖНЫЙ МАГАЗИН

РЕЗУЛЬТАТЫ ЗАКАЗА

$scazki=$_REQUEST[scazki];

$ctixi =$_REQUEST[ctixi];

$zurnal =$_REQUEST[zurnal];

echo «

Заказ обработан «;

echo date («H:i, jS F»);

echo «

«;

echo «

Ваш заказ составил:" ;

echo «

«;

echo $scazki." сказок Андерсона

«;

echo $ctixi." Книг со стихами Пушкина

«;

echo $zurnal." журналов

«;

$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 «

n" ;

echo «Всего заказано: «.$totalqty.»

n" ;

echo «На сумму: «.$totalamount.»

n" ;

$taxrate = 0.10; // Налог с продаж 10%

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

$totalamount = number_format ($totalamount, 2);

echo «С налогом с продаж: «.$totalamount.»

n" ;

?>

По аналогии придумайте и рассчитайте скидки на заказ в зависимости от количества и/или суммы покупки. Добавить в форму код, позволяющий получить информацию о том, какие формы рекламы лучше работают или что-то по смыслу вашей работы. Например:

Как вы нас нашли

Обработайте полученную информацию в файле processorder.php. Например:

switch ($_REQUEST[find]) {

case «a» :

echo «

Регулярный покупатель." ;

break;

case «b» :

echo «

Покупатель увидел рекламу о нас по телевизору." ;

break;

case «c» :

echo «

Покупатель нашел нас по телефонному справочнику." ;

break;

case «c» :

echo «

Покупатель узнал о нас от знакомых." ;

break;

default:

echo «

Мы на знаем как нашел нас покупатель." ;

break;}

Добавьте в форму таблицу стоимости доставки заказа в зависимости от расстояния:

$distance = 50;

while ($distance <= 250) {

echo «

n n";

echo «

nn";

$distance += 50;

}

?>

РасстояниеСтоимость
$distance". $distance / 10 ."

Добавьте в форму заказа запрос адреса клиента, заведите массив для хранения ближайших городов с расстояниями до них, вычислите в файле processorder. php стоимость доставки заказа клиенту.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Показать весь текст
Заполнить форму текущей работой