MyTetra Share
Делитесь знаниями!
Обработка множественного checkbox в PHP
Время создания: 12.02.2013 22:58
Текстовые метки: checkbox, флажки, php
Раздел: Компьютер - Программирование - Язык PHP
Запись: xintrea/mytetra_syncro/master/base/13606955307u0wsombuf/text.html на raw.github.com

Пример 1. Форма из одного флажка


Давайте создадим простою форму с одним флажком (checkbox).


<form action="checkbox-form.php" method="post">

Вам нужен доступ в интернет?

<input type="checkbox" name="formWheelchair" value="Yes" />

<input type="submit" name="formSubmit" value="Submit" />

</form>


В PHP скрипте (файл checkbox-form.php) возможно прочитать значение поля посредством массива $_POST. Если $_POST['formWheelchair'] присвоено значение YES, то флажок в был выбран. Если флажок не выбран, то переменная $_POST['formWheelchair'] не установлена.


Вот пример обработки формы на PHP:


<?php

if(isset($_POST['formWheelchair']) &&

$_POST['formWheelchair'] == 'Yes')

{

echo "Требуется доступ.";

}

else

{

echo "Доступ не нужен.";

}

?>


Переменной $_POST['formWheelchair'] присвоено значение "YES", так как значение атрибута value тега input равно "YES".


<form action="checkbox-form.php" method="post">


Атрибуту value вместо YES можно установить 1. Не забудьте ваш обновить ваш PHP код, соответственно установленным значениям.



Пример 2. Группа флажков


Нередко возникают ситуации, когда в форму необходимо вставить несколько флажков. Особенно в том случае, когда пользователю необходимо предоставить право выбора из нескольких вариантов. Это важно, так как, например, переключатель (radio) можно выбрать всего один.


Давайте составим форму, которая предоставит пользователю несколько вариантов выбора.


<form action="checkbox-form.php" method="post">

Выберите здания, которые необходимо посетить. <br />

<input type="checkbox" name="formDoor[]" value="A" />Acorn Building<br />


<input type="checkbox" name="formDoor[]" value="B" />Brown Hall<br />

<input type="checkbox" name="formDoor[]" value="C" />Carnegie Complex<br />


<input type="checkbox" name="formDoor[]" value="D" />Drake Commons<br />

<input type="checkbox" name="formDoor[]" value="E" />Elliot House


<input type="submit" name="formSubmit" value="Submit" />

</form>



Пожалуйста отметьте, что все флажки имеют одно имя (formDoor[]). Одно имя говорит о том, что все флажки связаны между собой. Квадратные скобки указывают на то, что все значения будут доступны из одного массива. То есть $_POST['formDoor'] не вернет строку, как в примере выше, вместо нее возвратится массив, содержащий значения флажков, которые были выбраны пользователем.


Например, если я отмечу все флажки, $_POST['formDoor'] вернет массив из {"A","B","C","D","E"}. В примере ниже мы получаем и отображаем все значения массива.


<?php

$aDoor = $_POST['formDoor'];

if(empty($aDoor))

{

echo("Вы ничего не выбрали.");

}

else

{

$N = count($aDoor);

echo("Вы выбрали $N здание(й): ");

for($i=0; $i < $N; $i++)

{

echo($aDoor[$i] . " ");

}

}

?>


Функция empty пригодится на тот случай, если пользователь ничего не выбрал. Если же массив не пустой, подсчитываем количество выбранных флажков при помощи функции count и выводим все значения при помощи цикла for.


Если выбран флажок 'Acorn Building', то массив будет содержать значение 'A'.

Проверяем, выбран ли конкретный флажок


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


function IsChecked($chkname,$value)

{

if(!empty($_POST[$chkname]))

{

foreach($_POST[$chkname] as $chkval)

{

if($chkval == $value)

{

return true;

}

}

}

return false;

}


Теперь достаточно просто вызвать функцию IsChecked (chkboxname,значение). Например:


(IsChecked('formDoor','A'))

{

//do ...

}


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования