PHP та форми

Ні для кого не секрет, що найбільш поширеним способом взаємодії html-сторінки з сайтом є форма. Форма (тобто html-елемент утворений тегом form) використовується і безкоштовними поштовими службами, електронними магазинами та багатьма іншими типами сайтів.

Обробка простих форм за допомогою PHP не становить жодних труднощів. Однак іноді виникає потреба обробити форму, що містить кілька однотипних полів, при тому, що їх кількість може змінюватися в широкому діапазоні і їх кількість заздалегідь не відома. У PHP передбачено таких випадків обробка однотипних полів як масиву значень. Розглянемо докладніше варіанти щодо різних типів полів.

Підтекстовими полямиу цій статті розуміються елементи, створювані тегамinputзі значенням параметра type рівнимtextі тегомtextarea. Організувати обробку форми, що складається з декількох таких полів, найпростіше. На лістингу нижче наведено листинг із html-розміткою для такої форми.

Як видно з лістингу, імена для елементів форми, з поглядуPHP, є елементами масиву. ТомуPHP-сценарій, який оброблятиме цю форму, сприйматиме все безліч текстових полів цієї форми як єдиний масив. До окремих елементів можна звертатися за індексами або використовувати перерахування за допомогою командlistтаeach, як це зроблено в наведеному нижче прикладі.

ключ - $key, значення - $val \n"; ?>

Перемикачами (checkbox) у цій статті називаються елементи, створювані тегамinputзі значенням параметра type рівнимcheckbox. Форма для використання змінної кількості перемикачів будується абсолютно так само. Зверніть увагу, що вибір конкретногозначення перемикача (тобто значення якості value) не важливий. Приклад наведений у лістингу нижче:

Однак обробка такої форми відрізняється від обробки, описаної для текстових полів. В даному випадку необхідно визначити, увімкнув чи ні відвідувач сайту той чи інший перемикач. Якщо увімкнув – то відповідний елемент масиву існує, якщо ні – то відсутній. У наступному лістингу наведено приклад PHP сценарію, який друкує увімкнені перемикачі:

Перед тим, як описувати обробку радіо-кнопок, необхідно згадати, як вони працюють. Суть радіо-кнопок (елементи створені тегамиinputзі значенням параметраtypeрівнимradio) полягає в тому, що, вибираючи одну кнопку, користувач автоматично знімає виділення з іншої кнопки із цього ж набору. Кнопки об'єднуються в набір дуже просто: у всіх кнопок у наборі одне й те саме ім'я. А ось значення (тобто параметриvalue) у кнопок у наборі – різні. І на сайт буде надіслано значення вибраної кнопки з назвою набору. Так само як і у випадку з текстовими полями та перемикачами імена наборів радіокнопок повинні оформлятися як імена елементів масиву в PHP. Приклад такої форми наведено у наступному лістингу:

ключ - $key, значення - $val \n"; ?>

Отже, нічого складного в обробці складних форм немає.