Как проверить checkbox php
HTML-код с формой:
. < FORMNAME="LAYOUTFORM" ACTION="checkbox_test.php" METHOD=POST> < INPUTTYPE=CHECKBOX NAME="cbName" VALUE="this is dummy value (need to be set)" ID="Forms Checkbox1"> < INPUTTYPE=SUBMIT NAME="GoButton" VALUE="go!" ID="Forms Button1"> < /FORM> .
< ?phpif (!$cbName) < echo 'Флажок cbName СБРОШЕН '; > if ($cbName) < echo 'Флажок cbName УСТАНОВЛЕН '; > //Значение параметра VALUE ("this is dummy value (need to be set)") // выведется, если флажок был установлен echo $cbCreateAcronymsTable.' '; ?>
Логика работы CHECKBOX проста — если он установлен пользователем, то переменной $cbName будет присвоено значение VALUE, иначе $cbName не получит значение. Поэтому параметру VALUE обязательно должно быть присвоено любое значение, иначе переменной флажка $cbName никогда не будет присвоено значение и PHP-код проверить факт установки флажка не сможет.
[Ссылки]
Обработка чекбоксов в PHP
В этой статье мы расскажем о input type checkbox HTML , и том, как они обрабатываются в PHP .
Одиночный чекбокс
Создадим простую форму с одним чекбоксом:
В PHP скрипте ( checkbox-form.php ) мы можем получить выбранный вариант из массива $_POST . Если $_POST[‘formWheelchair’] имеет значение » Yes «, то флажок для варианта установлен. Если флажок не был установлен, $_POST[‘formWheelchair’] не будет задан.
Вот пример обработки формы в PHP :
else < echo "Do not Need wheelchair access."; >?>
Для $_POST[‘formSubmit’] было установлено значение “ Yes ”, так как это значение задано в атрибуте чекбокса value :
Вместо “ Yes ” вы можете установить значение » 1 » или » on «. Убедитесь, что код проверки в скрипте PHP также обновлен.
Группа че-боксов
Иногда нужно вывести в форме группу связанных PHP input type checkbox . Преимущество группы чекбоксов заключается в том, что пользователь может выбрать несколько вариантов. В отличие от радиокнопки, где из группы может быть выбран только один вариант.
Возьмем приведенный выше пример и на его основе предоставим пользователю список зданий:
Обратите внимание, что input type checkbox имеют одно и то же имя ( formDoor[] ). И что каждое имя оканчивается на [] . Используя одно имя, мы указываем на то, что чекбоксы связаны. С помощью [] мы указываем, что выбранные значения будут доступны для PHP скрипта в виде массива. То есть, $_POST[‘formDoor’] возвращает не одну строку, как в приведенном выше примере; вместо этого возвращается массив, состоящий из всех значений чекбоксов, которые были выбраны.
Например, если я выбрал все варианты, $_POST[‘formDoor’] будет представлять собой массив, состоящий из: . Ниже приводится пример, как вывести значение массива:
else < $N = count($aDoor); echo("Вы выбрали $N здание(й): "); for($i=0; $i < $N; $i++) < echo($aDoor[$i] . " "); >> ?>
Если ни один из вариантов не выбран, $_POST[‘formDoor’] не будет задан, поэтому для проверки этого случая используйте » пустую » функцию. Если значение задано, то мы перебираем массив через цикл с помощью функции count() , которая возвращает размер массива и выводит здания, которые были выбраны.
Если флажок установлен для варианта » Acorn Building «, то массив будет содержать значение ‘ A ‘. Аналогично, если выбран » Carnegie Complex «, массив будет содержать C .
Проверка, выбран ли конкретный вариант
Часто требуется проверить, выбран ли какой-либо конкретный вариант из всех доступных элементов в группе HTML input type checkbox . Вот функция, которая осуществляет такую проверку:
function IsChecked($chkname,$value) < if(!empty($_POST[$chkname])) < foreach($_POST[$chkname] as $chkval) < if($chkval == $value) < return true; >> > return false; >
Чтобы использовать ее, просто вызовите IsChecked ( имя_чекбокса, значение ). Например:
if(IsChecked('formDoor','A')) < //сделать что-то . >//или использовать в расчете . $price += IsChecked('formDoor','A') ? 10 : 0; $price += IsChecked('formDoor','B') ? 20 : 0;
Скачать пример кода
Скачать PHP код примера формы с PHP input type checkbox .
Как узнать, установлен ли флажок в PHP
Как прочитать, установлено ли значение в чекбоксе на PHP?
Ответ 1
Если ваша HTML-страница выглядит так:
,
п осле отправки формы вы можете проверить ее так:
isset($_POST[‘test’])
или
if ($_POST[‘test’] == ‘value1’) .
Ответ 2
Zend Framework использует хороший хак для чекбоксов, который вы также можете сделать сами. Каждый сгенерированный флажок ассоциируется с одноименным скрытым полем, расположенным непосредственно перед флажком и имеющим значение « 0 » . Тогда, если ваш флажок имеет значение « 1 » , вы всегда получите значение « 0 » или « 1 » в результирующем GET или POST.
Ответ 3
При использовании флажков в виде массива:
,
в ам следует использовать in_array() :
if(in_array(‘Orange’, $_POST[‘food’]))
echo ‘Orange был выбран!’;
>
Не забудьте сначала проверить, что массив установлен, например:
if(isset($_POST[‘food’]) && in_array(.
Ответ 4
Пусть ваш html для вашего чекбокса будет похож на:
Затем, после отправки формы, вам нужно проверить его:
if (isset($_POST[‘check1’]))
// флажок установлен
> else
// альтернативный вариант
>
Предположим, что check1 должно быть именем вашего флажка. А если метод отправки вашей формы — GET, то вам нужно проверить переменные $_GET, например так:
if (isset($_GET[‘check1’]))
// флажок установлен
>
Ответ 5
Я использую этот трюк уже несколько лет, и он отлично работает без каких-либо проблем для отмеченного состояния флажка при использовании с PHP и базой данных.
HTML код: (для страницы добавления):
?>>
Код PHP (используется для добавления/редактирования страниц):
$status = $_POST[‘status’];
if ($status == 1)
$status = 1;
> else
$status = 0;
>
Подсказка: значение всегда будет пустым, если только пользователь не проверил его. Итак, у нас уже есть PHP-код, чтобы перехватить его и сохранить значение равным 0. Затем просто используйте переменную $status для работы с базой данных.
Ответ 6
Но приведенные выше примеры работают только тогда, когда вы хотите использовать INSERT значение, и не полезны для UPDATE различных значений в разных столбцах, поэтому вот мой маленький трюк:
// Установка всех значений в 0
$queryMU =’UPDATE ‘.$db->dbprefix().’settings SET menu_news = 0, menu_gallery = 0, menu_events = 0, menu_contact = 0’;
$stmtMU = $db->prepare($queryMU);
$stmtMU->execute();
if(!empty($_POST[‘check_menus’]))
foreach($_POST[‘check_menus’] as $checkU)
try
// обновление только выбранных значений
$queryMU =’UPDATE ‘.$db->dbprefix().’settings SET ‘.$checkU.’= 1’;
$stmtMU = $db->prepare($queryMU);
$stmtMU->execute();
> catch(PDOException $e)
$msg = ‘Error: ‘ . $e->getMessage();>
>
>
HTML:
Секрет в том, чтобы сначала обновить все VALUES (в данном случае в 0), а поскольку отправляются только проверенные значения, это означает, что все, что вы получите, должно быть установлено в 1, поэтому все, что вам необходимо, устанавливается во флажках в значение 1.
Пример для PHP, но он применим для всех языков.
Ответ 7
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Не удается проверить выбран ли checkbox
@cyadvert, да, $(‘#calcWater_caisson:checked’) в обоих случаях возвращает объект, отсюда и Yes всегда.
24 окт 2015 в 15:19
@Visman — спасибо. исправлено
24 окт 2015 в 15:21
Вы передаете в пост значение чекбокса, не учитывая его состояние.
Соответственно, вам надо его (состояние) проверить. И исходя из этого отправить нужные данные. Например
var checkbox = document.getElementById('calcWater_caisson'); $.ajax(< url: "1.php", type: "POST", dataType: "html", data: < adapter: checkbox.checked ? checkbox.value : '' >, success: function(response) < $("#contentST").html(response); >>);
$(document).ready(function() < $("#link").click(function() < var checkbox = document.getElementById('calcWater_caisson'); $.ajax(< url: "1.php", type: "POST", dataType: "html", data: < adapter: checkbox.checked ? checkbox.value : '' >, success: function(response) < $("#contentST").html(response); >>); >); >);