PHP и формы

Ни для кого не является секретом, что наиболее распространенным способом взаимодействия html-страницы с сайтом является форма. Форма (то есть html-элемент образуемый тегом form) используется и бесплатными почтовыми службами, электронными магазинами и многими другими типами сайтов..
Обработка простых форм посредством PHP не представляет никакого труда. Однако время от времени возникает потребность обработать форму, содержащую несколько однотипных полей, притом, что их количество может изменяться в широком диапазоне и их количество заранее не известно. В PHP предусмотрено для таких случаев обработка однотипных полей как массива значений. Рассмотрим подробнее варианты для разных типов полей.

Текстовые поля

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

<form action='do.html' method='post'>

 <input type='text' name='txt[0]' value=''><br>

 <input type='text' name='txt[1]' value=''><br>

 <input type='text' name='txt[2]' value=''><br>

 <input type='text' name='txt[3]' value=''><br>

 <input type='text' name='txt[4]' value=''><br>

 <input type='submit' value='Отправить'>

</form>


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

<?php

 while(list($key,$val) = each($txt))

  echo "ключ - $key, значение - $val<br>\n";

?>



Переключатели

Переключателями (checkbox) в этой статье называются элементы, создаваемые тегам input со значением параметра type равным checkbox. Форма для использования переменного количества «переключателей» строится абсолютно так же. Обратите внимание, что выбор конкретного значения переключателя (то есть значение свойства value) не важен. Пример приведен в листинге ниже:

<form action='do.html' method='post'>

 <input type='checkbox' name='chb[0]' value='1'><br>

 <input type='checkbox' name='chb[1]' value='1'><br>

 <input type='checkbox' name='chb[2]' value='1'><br>

 <input type='checkbox' name='chb[3]' value='1'><br>

 <input type='checkbox' name='chb[4]' value='1'><br>

 <input type='submit' value='Отправить'>

</form>


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

Радио-кнопки

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

<form action='do.html' method='post'>

 // первый набор кнопок

 <input type='radio' name='rdi[0]' value='1'>

 <input type='radio' name='rdi[0]' value='2'>

 <input type='radio' name='rdi[0]' value='3'><br>

 // второй набор кнопок

 <input type='radio' name='rdi[1]' value='1'>

 <input type='radio' name='rdi[1]' value='2'>

 <input type='radio' name='rdi[1]' value='3'><br>

 // третий набор кнопок

 <input type='radio' name='rdi[2]' value='1'>

 <input type='radio' name='rdi[2]' value='2'>

 <input type='radio' name='rdi[2]' value='3'><br>

<input type='submit' value='Отправить'>

</form>


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

<?php

 while(list($key,$val) = each($rdi))

  echo "ключ - $key, значение - $val<br>\n";

?>



Заключение

Таким образом, ничего сложного в обработке сложных форм нет.

Поделиться в соц. сетях

mailru PHP и формы
facebook PHP и формы
odnoklassniki PHP и формы
livejournal PHP и формы
googlebuzz PHP и формы

Также рекомендуем:

  1. AJAX’овые грабли в Internet Explorer 6 Если передаваемый сервером заголовок с кодировкой не понятен IE, то возникает прекрасная, красноречивая Системная ошибка: -1072896658. IE приводит к нижнему регистру передаваемые custom-заголовки запросов, например X-Requested-With: XMLHttpRequest превращается на сервере в x-requested-with: xmlhttprequest). Нафига? Internet Explorer иногда не кеширует фоновые изображения, полученные через AJAX; повторно загружаемый фон «забывает» посмотреть в кеше. IE некорректно парсит js-код [...]...
  2. Что такое блог? Блог – это сайт, на котором находятся личные заметки автора. В основном, заметками являются ссылки на сайты, которые кажутся владельцу ресурса наиболее интересными, и комментарии к ним. Одни владельцы блогов дают небольшие комментарии на приведенные ссылки, другие же пытаются подробно описать сайт. Это могут быть не только ссылки, но и просто дневник с записями, начиная [...]...
  3. Отказ в обслуживании в Microsoft Internet Explorer Программа: Microsoft Internet Explorer 6.x Опасность: Средняя Наличие эксплоита: Да . Описание: Уязвимость позволяет удаленному пользователю вызвать отказ в обслуживании. Уязвимость существует в библиотеке mshtml.dll при обработке тега OBJECT. Удаленный пользователь может с помощью специально сформированной Web страницы вызвать отказ в обслуживании браузера. Примеры: http://lcamtuf.coredump.cx/iedie2-1.htmlhttp://lcamtuf.coredump.cx/iedie2-2.htmlhttp://lcamtuf.coredump.cx/iedie2-3.htmlhttp://lcamtuf.coredump.cx/iedie2-4.html URL производителя: www.microsoft.com Решение: Способов устранения уязвимости не существует в [...]...
  4. Яндекс и доп. ссылки для мультиязычных сайтов Яндекс обзавелся механизмом вывода сайтов, имеющих несколько версий на различных языках, в SERP. Если Яндекс «понимает», что найденный текст – перевод исходного с другого языка, то результат поиска выдает под заголовком найденной ссылку на страницу с переведенным документом.. Бывает и так, что сайт имеет два идентичных текста на разных языках. В этом случае адрес страницы [...]...
  5. Текст из воды Step 1Создайте документ и напишите любой текст. Растеризуйте слой.. Используя кисть, добавьте несколько капель и подтеков к тексту. Объедините оба слоя Layer > Flatten Image. Step 2Идем в палитру каналов и создаем маску канала путем перетаскивания любого слоя Red, Green или Blue на иконку New Channel внизу палитры каналов. Называем его water. Далее инвертируем канал [...]...
  6. Статистика сайта – ответы на вопросы и не только… Статистика веб-сайта родилась из вопросов. Все начинается с этого.. Интересно, как увеличить продажи? Совсем коротко о главном. Человек сидит за компьютером и с помощью браузера просматривает веб-сайт. Сайт состоит из файлов. Интересно, какие файлы просматривают чаще? И кто их просматривает? Чуть подробнее о предмете. Веб-сайт состоит из совокупности файлов – гипертекстовых документов, картинок оформления, данных. [...]...
  7. Работа с SQLite Введение SQLite – это реляционная база данных, запросы к которой можно осуществлять при помощи языка запросов SQL. База данных не поддерживает все особенности SQL и уступает в функциональности другим развитым СУБД, но вполне подходит для хранения и извлечения информации.. Отличие SQLite от MySQL и аналогичных СУБД Классические СУБД, такие как MySQL (а так же MS [...]...
  8. Ловушка для спам-бота Многие спам-боты, чтобы скрыть свои реальные имена (названия), которые легко отследить по записи user_agent, изменяют эту запись, меняя её на записи разных браузеров (например: «mozilla/4.0 (compatible; msie 5.5; windows nt 5.0)» и так далее). Также эти боты игнорируют стандарты записей для файла robots.txt (описание стандарта Вы можете прочесть здесь http://www.robotstxt.org/wc/exclusion.html robots.txt standard).. Можно, конечно, пойти [...]...
  9. Как создать 1000 статей за полчаса 1. Качайте SEO Generator2. Пройдите режим обучения программы 3. Работаете со статьей также как с длиным описанием4. Генерируете статью в файлыПодсказка: используйте для отладки фишку: если строка начинаеться с символа #, то эта строка и последующие не будут генериться.Не переусердствуйте с синтаксисом не мучайте программу и свой мозг.Качаете SEO Generator http://www.altalabs.ru/files/SEOGENDEMO.rar. Так-же будет полезна прога [...]...
  10. Преимущества локальной оптимизации Займитесь локальной оптимизацией. Зачастую оптимизации локального поиска не уделяется достаточно внимания, а между тем это отличный способ привлечения на ваш сайт местного трафика. Включив локальную информации в свои тэги и страницы, вы можете потенциальным клиентам найти специальную информацию по району и сфере деятельности, какие их интересует.. Что такое оптимизация локального поиска? Оптимизация локального поиска – [...]...
  11. Бизнес на подкастах – уже реальность О подкастинге, как об очень важном явлении в online-маркетинге, сейчас оченьчасто говорят, потому что подкастинг – это маленький, зато очень мощныйбизнес-инструмент. Несмотря на это, большинство людей не уделяют емудолжного внимания, т. к. этот термин звучит уж как-то очень технично дляобычных людей.. В этой статье я попытаюсь немного пролить свет на эту технологию. Давайтеначнём с того, [...]...
  12. Ucoz web service. Как это было… ПРЕЛЮДИЯ Жил был один молодой парень, который даже не слышал о компьютерах и не мог понять, что это такое. Впервые ему удалось лицезреть его в 10лет. Решив удивить своих друзей и преподавателя, он радостно сказал : я знаю что ЭТО… Осциллограф! Но не было в этом моей вины, вы убедитесь в этом увидев ЭВМ «Электрон».. [...]...
  13. Социальный поиск Google становится глобальным В последнее время в компании Google четко прослеживается тенденция к глобализации собственных поисковых сервисов.. Еще совсем недавно по всему миру был запущен новый поисковый алгоритм Panda, а уже сейчас появилось официальное сообщение о массовом внедрении социального поиска (Social search). Отныне на всех локальных версиях поиска Google в поисковую выдачу будут включаться социальные результаты – записи [...]...
  14. Для тех, кто хочет больше,чем HTML Для тех, кто хочет самостоятельно научиться локально делать сайты, программировать, используя языки: php, sgi, да еще с поддержкой базы данных (mysql). Все это Вы сможете, если установите локальный сервер на своим компъютере. . В этой статье я не даю подробных инструкций и комментариев, так как это получится целый талмуд. Я сам не супер-мупер пользователь, да [...]...
  15. Несколько советов по созданию эффективного сайта! Для чего нужен вам сайт и его основные задачи. . Вы сначала должны определиться, для чего нужен вам сайт и на какую тематику он будет.Образно говоря сайты делятся на некоторые категории, к примеру – не коммерческие сайты и коммерческие. Не коммерческий сайт. Такой сайт может быть посвящен чему угодно. Вашему хобби или же он будет [...]...

Комментарии запрещены.