Как читать, если в PHP установлен флажок? - PullRequest
242 голосов
/ 29 декабря 2010

Как читать, если в PHP установлен флажок?

Ответы [ 17 ]

312 голосов
/ 29 декабря 2010

Если ваша HTML-страница выглядит следующим образом:

<input type="checkbox" name="test" value="value1">

После отправки формы вы можете проверить ее с помощью:

isset($_POST['test'])

или

if ($_POST['test'] == 'value1') ...
94 голосов
/ 29 декабря 2010

Zend Framework использует приятный хак для флажков, который вы также можете сделать самостоятельно:

Каждый сгенерированный флажок связан со скрытым полем с тем же именем, помещенным непосредственно перед флажком, и со значением"0".Затем, если ваш флажок в качестве значения «1», вы всегда получите значение «0» или «1» в результате GET или POST

<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1"> 
49 голосов
/ 04 ноября 2013

При использовании флажков в качестве массива:

<input type="checkbox" name="food[]" value="Orange">
<input type="checkbox" name="food[]" value="Apple">

Вы должны использовать in_array():

if(in_array('Orange', $_POST['food'])){
  echo 'Orange was checked!';
}

Не забудьте проверить, что массив установлен первым, например:

if(isset($_POST['food']) && in_array(...
38 голосов
/ 17 августа 2012

Пусть ваш HTML для вашего флажка будет выглядеть как

<input type="checkbox" name="check1">

Тогда после отправки формы вам необходимо проверить, как

if (isset($_POST['check1'])) {

    // Checkbox is selected
} else {

   // Alternate code
}

Предполагая, что check1 должно быть вашим именем-флажком. А если ваш метод отправки формы - GET, вам нужно проверить с помощью $_GET таких переменных, как

if (isset($_GET['check1'])) {

   // Checkbox is selected
} 
8 голосов
/ 29 апреля 2015
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
5 голосов
/ 09 июля 2017

Я использую этот трюк в течение нескольких лет, и он отлично работает без каких-либо проблем с состоянием отмеченных / не отмеченных флажков при использовании с PHP и базой данных.

HTML Code: (для страницы добавления)

<input name="status" type="checkbox" value="1" checked>

Подсказка: снимите флажок, если вы хотите, чтобы он был по умолчанию отключен

HTML-код: (для страницы редактирования)

<input name="status" type="checkbox" value="1" 
<?php if ($row['status'] == 1) { echo "checked='checked'"; } ?>>

Код PHP: (используйтедля добавления / редактирования страниц)

$status = $_POST['status'];
if ($status == 1) {
$status = 1;
} else {
$status = 0;
}

Подсказка: всегда будет пустое значение, если пользователь не проверил его.Итак, у нас уже есть код PHP для его перехвата, в противном случае оставьте значение 0. Затем просто используйте переменную $ status для базы данных.

4 голосов
/ 27 мая 2014

Чтобы проверить, установлен ли флажок, используйте empty ()

Когда форма отправлена, флажок будет ВСЕГДА , потому что ВСЕ POST переменные будут отправлены вместе с формой.

Проверьте, установлен ли флажок с пустым, следующим образом:

//Check if checkbox is checked    
if(!empty($_POST['checkbox'])){
 #Checkbox selected code
} else {
 #Checkbox not selected code
}
3 голосов
/ 29 декабря 2010

Вы можете проверить соответствующее значение как установленное и непустое в массиве $ _POST или $ _GET в зависимости от действия вашей формы.

т.е.: с формой POST, использующей name «теста» (т.е.: <input type="checkbox" name="test">, вы должны использовать:

if(isset($_POST['test']) {
   // The checkbox was enabled...

}
2 голосов
/ 28 октября 2013

Ну, приведенные выше примеры работают только тогда, когда вы хотите ВСТАВИТЬ значение, бесполезно для ОБНОВЛЕНИЯ различных значений в разные столбцы, поэтому вот мой маленький трюк для обновления:


//EMPTY ALL VALUES TO 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 {
//UPDATE only the values checked
    $queryMU ='UPDATE '.$db->dbprefix().'settings SET '.$checkU.'= 1';
            $stmtMU = $db->prepare($queryMU);
            $stmtMU->execute();  
        } catch(PDOException $e) {
          $msg = 'Error: ' . $e->getMessage();}

        }
}
<input type="checkbox" value="menu_news" name="check_menus[]" />
<input type="checkbox" value="menu_gallery" name="check_menus[]" />

....

Секрет заключается в том, чтобы сначала обновить все ЗНАЧЕНИЯ (в данном случае 0), и, поскольку он будет отправлять только проверенные значения, это означает, что все, что вы получаете, должно быть установлено в 1, поэтому все, что вы получаетеустановите его на 1.

Примером является PHP, но он применим ко всему.

Веселитесь:)

2 голосов
/ 05 июня 2013

Узнайте о isset, который является встроенной «функцией», которую можно использовать в операторах if, чтобы указать, использовалась ли переменная или установлена ​​

Пример:

    if(isset($_POST["testvariabel"]))
     {
       echo "testvariabel has been set!";
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...