Форма из одного флажка
Давайте создадим простою форму с одним флажком (checkbox).
HTML
1 2 3 4 5 |
<span class="hljs-tag"><<span class="hljs-title">form</span> <span class="hljs-attribute">action</span>=<span class="hljs-value">"checkbox-form.php"</span> <span class="hljs-attribute">method</span>=<span class="hljs-value">"post"</span>></span> Вам нужен доступ в интернет? <span class="hljs-tag"><<span class="hljs-title">input</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"checkbox"</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"formWheelchair"</span> <span class="hljs-attribute">value</span>=<span class="hljs-value">"Yes"</span> /></span> <span class="hljs-tag"><<span class="hljs-title">input</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"submit"</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"formSubmit"</span> <span class="hljs-attribute">value</span>=<span class="hljs-value">"Submit"</span> /></span> <span class="hljs-tag"></<span class="hljs-title">form</span>></span> |
В PHP скрипте (файл checkbox-form.php) возможно прочитать значение поля посредством массива $_POST
. Если $_POST['formWheelchair']
присвоено значение YES, то флажок в был выбран. Если флажок не выбран, то переменная $_POST['formWheelchair']
не установлена.
Вот пример обработки формы на PHP:
PHP
1 2 3 4 5 6 7 8 9 10 11 |
<span class="php"><span class="hljs-preprocessor"><?php</span> <span class="hljs-keyword">if</span>(<span class="hljs-keyword">isset</span>(<span class="hljs-variable">$_POST</span>[<span class="hljs-string">'formWheelchair'</span>]) && <span class="hljs-variable">$_POST</span>[<span class="hljs-string">'formWheelchair'</span>] == <span class="hljs-string">'Yes'</span>) { <span class="hljs-keyword">echo</span> <span class="hljs-string">"Требуется доступ."</span>; } <span class="hljs-keyword">else</span> { <span class="hljs-keyword">echo</span> <span class="hljs-string">"Доступ не нужен."</span>; } <span class="hljs-preprocessor">?></span></span> |
Переменной $_POST['formWheelchair']
присвоено значение YES, так как значение атрибута value
тега input
равно «YES»
.
HTML
1 |
<span class="hljs-tag"><<span class="hljs-title">form</span> <span class="hljs-attribute">action</span>=<span class="hljs-value">"checkbox-form.php"</span> <span class="hljs-attribute">method</span>=<span class="hljs-value">"post"</span>></span> |
Атрибуту value
вместо YES можно установить 1. Не забудьте ваш обновить ваш PHP код, соответственно установленным значениям.
Группа флажков
Нередко возникают ситуации, когда в форму необходимо вставить несколько флажков. Особенно в том случае, когда пользователю необходимо предоставить право выбора из нескольких вариантов. Это важно, так как, например, переключатель (radio
) можно выбрать всего один.
Давайте составим форму, которая предоставит пользователю несколько вариантов выбора.
HTML
1 2 3 4 5 6 7 8 9 10 11 12 |
<span class="hljs-tag"><<span class="hljs-title">form</span> <span class="hljs-attribute">action</span>=<span class="hljs-value">"checkbox-form.php"</span> <span class="hljs-attribute">method</span>=<span class="hljs-value">"post"</span>></span> Выберите здания, которые необходимо посетить. <span class="hljs-tag"><<span class="hljs-title">br</span> /></span> <span class="hljs-tag"><<span class="hljs-title">input</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"checkbox"</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"formDoor[]"</span> <span class="hljs-attribute">value</span>=<span class="hljs-value">"A"</span> /></span>Acorn Building<span class="hljs-tag"><<span class="hljs-title">br</span> /></span> <span class="hljs-tag"><<span class="hljs-title">input</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"checkbox"</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"formDoor[]"</span> <span class="hljs-attribute">value</span>=<span class="hljs-value">"B"</span> /></span>Brown Hall<span class="hljs-tag"><<span class="hljs-title">br</span> /></span> <span class="hljs-tag"><<span class="hljs-title">input</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"checkbox"</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"formDoor[]"</span> <span class="hljs-attribute">value</span>=<span class="hljs-value">"C"</span> /></span>Carnegie Complex<span class="hljs-tag"><<span class="hljs-title">br</span> /></span> <span class="hljs-tag"><<span class="hljs-title">input</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"checkbox"</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"formDoor[]"</span> <span class="hljs-attribute">value</span>=<span class="hljs-value">"D"</span> /></span>Drake Commons<span class="hljs-tag"><<span class="hljs-title">br</span> /></span> <span class="hljs-tag"><<span class="hljs-title">input</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"checkbox"</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"formDoor[]"</span> <span class="hljs-attribute">value</span>=<span class="hljs-value">"E"</span> /></span>Elliot House <span class="hljs-tag"><<span class="hljs-title">input</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"submit"</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"formSubmit"</span> <span class="hljs-attribute">value</span>=<span class="hljs-value">"Submit"</span> /></span> <span class="hljs-tag"></<span class="hljs-title">form</span>></span> |
Пожалуйста отметьте, что все флажки имеют одно имя (formDoor[ ]
). Одно имя говорит о том, что все флажки связаны между собой. Квадратные скобки указывают на то, что все значения будут доступны из одного массива. То есть $_POST['formDoor']
не вернет строку, как в примере выше, вместо нее возвратится массив, содержащий значения флажков, которые были выбраны пользователем.
Например, если я отмечу все флажки, $_POST['formDoor']
вернет массив из {A,B,C,D,E}
. В примере ниже мы получаем и отображаем все значения массива.
PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<span class="php"><span class="hljs-preprocessor"><?php</span> <span class="hljs-variable">$aDoor</span> = <span class="hljs-variable">$_POST</span>[<span class="hljs-string">'formDoor'</span>]; <span class="hljs-keyword">if</span>(<span class="hljs-keyword">empty</span>(<span class="hljs-variable">$aDoor</span>)) { <span class="hljs-keyword">echo</span>(<span class="hljs-string">"Вы ничего не выбрали."</span>); } <span class="hljs-keyword">else</span> { <span class="hljs-variable">$N</span> = count(<span class="hljs-variable">$aDoor</span>); <span class="hljs-keyword">echo</span>(<span class="hljs-string">"Вы выбрали $N здание(й): "</span>); <span class="hljs-keyword">for</span>(<span class="hljs-variable">$i</span>=<span class="hljs-number">0</span>; <span class="hljs-variable">$i</span> < <span class="hljs-variable">$N</span>; <span class="hljs-variable">$i</span>++) { <span class="hljs-keyword">echo</span>(<span class="hljs-variable">$aDoor</span>[<span class="hljs-variable">$i</span>] . <span class="hljs-string">" "</span>); } } <span class="hljs-preprocessor">?></span></span> |
Функция empty
пригодится на тот случай, если пользователь ничего не выбрал. Если же массив не пустой, подсчитываем количество выбранных флажков при помощи функции count
и выводим все значения при помощи цикла for
.
Если выбран флажок ‘Acorn Building’, то массив будет содержать значение ‘A’.
Проверяем, выбран ли конкретный флажок
Часто требуется проверить: выбран ли конкретный флажок. Для этого можно использовать следующую функцию:
PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">IsChecked</span><span class="hljs-params">(<span class="hljs-variable">$chkname</span>,<span class="hljs-variable">$value</span>)</span> {</span> <span class="hljs-keyword">if</span>(!<span class="hljs-keyword">empty</span>(<span class="hljs-variable">$_POST</span>[<span class="hljs-variable">$chkname</span>])) { <span class="hljs-keyword">foreach</span>(<span class="hljs-variable">$_POST</span>[<span class="hljs-variable">$chkname</span>] <span class="hljs-keyword">as</span> <span class="hljs-variable">$chkval</span>) { <span class="hljs-keyword">if</span>(<span class="hljs-variable">$chkval</span> == <span class="hljs-variable">$value</span>) { <span class="hljs-keyword">return</span> <span class="hljs-keyword">true</span>; } } } <span class="hljs-keyword">return</span> <span class="hljs-keyword">false</span>; } |
Теперь достаточно просто вызвать функцию IsChecked
(chkboxname,значение). Например:
PHP
1 2 3 4 5 |
<span class="hljs-keyword">if</span>(IsChecked(<span class="hljs-string">'formDoor'</span>,<span class="hljs-string">'A'</span>)) { //<span class="hljs-keyword">do</span> ... } |