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

Метод extract

РНР обладает большой библиотекой функций, предназначенных для работы с массивами. Атрибуты name полей формы становятся индексами элементов массивов $_POST или $_GET. Ранее на сервере при получении формы эти имена автоматически преобразовывались в имена переменных. С целью более жесткого контроля за поступающей информацией одновременно с введением суперглобальных массивов произошел отказ от таких неявных преобразований. Однако для любого ассоциативного массива, включая суперглобальные, с помощью метода extract можно преобразовать массив в совокупность переменных (если в индексах соблюдены правила именования переменных!).

Таким образом, после выполнения оператора extract($_POST); можно пользоваться соответствующими переменными без обращения к массиву $_POST.

II. Управление информацией из форм

1. Обработка текстовых полей формы

6. Фамилия, имя и отчество задаются текстовыми полями, для которых удобно задать атрибуты name так, чтобы после применения extract были получены те же переменные, что и введены в пункте I.1 (firstName и т.д.).

В элементах input для этих трех полей значения атрибута value удобно задать переменными $firstName, $middleName, $lastName. Если форма загружается в первый раз, то массив $_POST пуст и поэтому будут использоваться значения переменных по умолчанию, заданные в I.1. Если форма загружается повторно, то после выполнения extract эти переменные получат новые значения, взятые из формы.

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

Эта строка вставляется в элемент show основного файла.

7. Проверить работу программы во всех режимах.

Проектирование структур данных

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

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

2. Переключатель для указания пола регистрируемого

Переключатель допускает выбор только одного из предложенных значений.

При отсылке формы на обработку из переключателя берется значение атрибута value отмеченной позиции (значение атрибута name — индекс соответствующего суперглобального массивов $_GET или $_POST).

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

Однако можно обойтись без такой проверки, если воспользоваться ассоциативным массивом. В этом массиве роль ключей нужно поручить выполнять обозначению пола, а значениями будут либо "checked", в зависимости от выбранного пола, либо пустая строка. Т.е. элементы массива имеет структуру "пол" => "отмечен/не отмечен".

При запуске программы ни один из языков не выбран, поэтому массив по умолчанию определяется в начале файла form_func.php как

$rad=array('Мужской'=>'',

'Женский'=>''

);

При генерации формы в соответствующий элемент input дописывается конструкция $checked[пол], которая отмеченному элементу добавляет атрибут checked, а в остальные — ни на что не влияющую пустую строку.

В процессе "распаковки" формы из массива $_POST извлекается значение отмеченного поля переключателя (обозначение пола!) и оно используется для доступа (индекс) к элементу массива $rad, у которого нужно установить значение 'checked'.

$rad[имя_переключателя]='checked';

Замечание

Так как для формы разговор об обязательном заполнении полей не ведется, то есть опасность, что пол (а ниже, языки программирования и предполагаемые должности) не были выбраны вообще. Поэтому, прежде чем пытаться использовать значения соответствующих php-переменных, нужно убедиться в том, что они существуют (isset).

3. Обработка информации о должностях и языках программирования.

Список должностей и список языков программирования должны допускать множественный выбор.

При отсылке информации из таких списков браузером формируется массив, имя которого берется из атрибута name соответственно элементов select и checkbox (как нужно задать имя в name, чтобы передавался массив, а не одно значение?),

Значениями элементов отсылаемого массива являются выбранные пользователем члены списка (например, Си, Паскаль, PHP или Системным администратором, Руководителем группы и т.п.).

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

$checked=array('Си'=>'',

'Паскаль'=>'',

'РНР'=>''

);

$selected=array('Программистом'=>'',

'Системным администратором'=>'',

'Постановщиком задач'=>'',

'Руководителем группы'=>''

);

Основное отличие здесь состоит в том, что при загрузке страницы может потребоваться в этом массиве менять не одно значение, а несколько. Поэтому предполагая, что атрибут name в элементе select имеет значение position, ключи отмечаемых ('selected') элементов массива нужно выбирать в цикле типа

foreach($position as $key){

...

}

Точно также, предполагая, что атрибут name в элементе checkbox имеет значение check, ключи отмечаемых ('checked') элементов массива нужно выбирать в цикле типа

foreach($check as $key){

...

}

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