Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
php-7.doc
Скачиваний:
0
Добавлен:
24.01.2020
Размер:
123.9 Кб
Скачать

Элемент button

Этот элемент может использоваться в формах или сам по себе. Его атрибут type допускает значения submit, reset и button (по умолчанию).

Когда кнопка нужна только для запуска некоторого скрипта, то можно обойтись без формы, используя элемент button с type="button". На эту кнопку можно поместить одновременный форматированный текст, картинки. Кроме того, можно также управлять стилями отображения, например, цветом фона кнопки.

Созданная таким образом кнопка при щелчке "утапливается", как должно быть при нажатии. Функциональность кнопки определяется заданием обработчика события onclick.

<button width="60" onclick="openMyPage()" style="background-color:wheat">

<img src="new.gif" border="0" hspace="10" vspace=5>

<h3>Кнопка</h3>

</button>

Обработка информации из форм

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

Примечание.

Формируется еще один, сводный массив $_REQUEST, куда помещается информация, присланная обоими методами, также через куки.

1. Информация из текстовых полей.

Информация из текстового поля формы помещается в элемент массива $_GET или $_POST с индексом, совпадающим со значением атрибута name соответствующего тега <input>. Если текстовое поле отослано незаполненным, то значение элемента массива — пустая строка.

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

<form action="action.php" method="POST">

<input type=text name="tfield[]" value="…" >

<input type=text name="tfield[]" value="…" >

. . .

<input type=text name="tfield[]" value="…" >

</form>

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

$_POST["tfield"][1]

2. Переключатели (радиокнопки)

Значение атрибута value из отмеченной позиции переключателя передается через элемент соответствующего суперглобального массива с индексом, совпадающим с атрибутом name группы радиокнопок.

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

3. Флажки.

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

Если флажок не установлен, то элемент суперглобального массива не создается.

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

4. Информация из списков.

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

Если используется список, в котором можно выбрать несколько значений (используя клавишу Ctrl), то, чтобы переслать их как массив, значение атрибута name нужно дополнить пустыми квадратными скобками:

<select name="Selector[]" multiple>

<option>Выбор 1

<option>Выбор 2

<option>Выбор 3

</select>

ЗАДАНИЕ

Создать анкету — форму. В форму включены следующие элементы:

а) группа текстовых полей "Фамилия", "Имя", "Отчество" (передается на обработку массивом);

б) переключатель "Пол";

в) группа флажков "Программирую:" со значениями "Си", "Паскаль", "PHP" (передается на обработку массивом);

г) список с множественным выбором "Могу работать:" со значениями "Программистом", "Системным администратором", "Руководителем группы", "Постановщиком задач".

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

Реализовать всю программу в одном php-файле (с подгрузкой файла php-кода).

Анализ работы программы

Программа должна отображать четыре типа страниц, содержащих:

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

б) информацию, взятую из формы и представленную для проверки в текстовом виде (рис. 3);

в) восстановленную форму с введенной ранее информацией для внесения исправлений, если пользователь при проверке нашел неточности (рис. 2);

г) благодарность за заполнение формы (рис. 4).

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

Рис. 1

Рис. 2

Второй тип страницы имеет две кнопки: "Верно" для подтверждения правильности введенной информации и "Исправить", когда нужно вернуть форму для исправлений.

Рис. 3

Четвертая страница не содержит ничего, кроме текста благодарности.

Рис. 4

Чтобы реализовать эти варианты в одном файле, этот документ должен включать четыре элемента div, отображение которых управляется свойством display — в любой момент времени виден только один тип содержания.

Схема переходов между различными представлениями страницы:

Функция Отослать требует перезагрузки страницы, так как необходимо извлечь информацию из формы и отобразить ее другим способом. Поэтому выполнение этой функции требует участия сервера (что означает использование РHP-кода).

Переходы, связанные с выполнением функций Исправить и Верно, можно выполнять без перезагрузки страницы, поэтому их экономнее реализовать на стороне клиента (Javascript).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]