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


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

Author: Thew, 2010-12-29

15 answers

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

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

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

isset($_POST['test'])

Или

if ($_POST['test'] == 'value1') ...
 274
Author: m_vitaly, 2015-10-20 19:08:40

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

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

<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1"> 
 87
Author: regilero, 2014-07-04 12:43:05

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

<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(...
 43
Author: rybo111, 2015-12-09 23:49:55

Пусть ваш 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
} 
 37
Author: Gautam3164, 2013-09-03 10:28:50
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
 7
Author: Hammad Khan, 2015-04-29 15:21:28

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

Т.е.: С помощью формы POST с использованием name "теста" (т.Е.: <input type="checkbox" name="test">, вы бы использовали:

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

}
 3
Author: John Parker, 2010-12-29 14:08:19

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

Пример:

    if(isset($_POST["testvariabel"]))
     {
       echo "testvariabel has been set!";
     }
 2
Author: user2451511, 2013-08-09 09:45:57

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


//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
Author: Hiram, 2013-10-27 22:14:10

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

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

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

//Check if checkbox is checked    
if(!empty($_POST['checkbox']){
#Checkbox selected code
} else {
#Checkbox not selected code
}
 1
Author: andy, 2014-05-27 18:25:47
$is_checked = isset($_POST['your_checkbox_name']) &&
              $_POST['your_checkbox_name'] == 'on';

Оценка короткого замыкания позаботится о том, чтобы вы не получили доступ к your_checkbox_name, когда он не был отправлен.

 1
Author: Martin Thoma, 2014-07-23 18:44:20

Минималистичная логическая проверка с сохранением положения переключателя

<?php

$checked = ($_POST['foo'] == ' checked');

?>

<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>
 1
Author: Rembo, 2017-02-21 01:04:03

Вы можете сделать это с помощью короткого, если:

$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;

Или с новым PHP7 Null coalescing operator

$check_value = $_POST['my_checkbox_name'] ?? 0;
 1
Author: Mazz, 2017-04-14 09:30:54

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

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

<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 для базы данных.

 0
Author: ZEESHAN ARSHAD, 2017-07-09 09:47:44
<?php

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

    $nama      = $_POST['name'];
    $subscribe = isset($_POST['subscribe']) ? $_POST['subscribe'] : "Not Checked";

    echo "Name: {$nama} <br />";
    echo "Subscribe: {$subscribe}";

    echo "<hr />";   

  }

?>

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST" >

  <input type="text" name="name" /> <br />
  <input type="checkbox" name="subscribe" value="news" /> News <br />

  <input type="submit" name="add" value="Save" />

</form>
 0
Author: antelove, 2017-12-11 13:53:11
<?php

if(isset($_POST['nameCheckbox'])){
    $_SESSION['fr_nameCheckbox'] = true;
}

?>

<input type="checkbox" name="nameCheckbox" 

<?php 

if(isset($_SESSION['fr_nameCheckbox'])){
    echo 'checked'; 
    unset($_SESSION['fr_nameCheckbox']);
} 

?>
 -3
Author: Grzegorz, 2016-10-21 13:05:53