Как проверить checkbox php
Перейти к содержимому

Как проверить checkbox php

  • автор:

Как проверить 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 .

Одиночный чекбокс

Создадим простую форму с одним чекбоксом:

 
Do you need wheelchair access?

В 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 . Преимущество группы чекбоксов заключается в том, что пользователь может выбрать несколько вариантов. В отличие от радиокнопки, где из группы может быть выбран только один вариант.

Возьмем приведенный выше пример и на его основе предоставим пользователю список зданий:

 
Which buildings do you want access to?
Acorn Building
Brown Hall
Carnegie Complex
Drake Commons
Elliot House

Обратите внимание, что 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); >>); >); >); 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *