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

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

Ответ 1

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

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

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

isset($_POST['test'])

или

if ($_POST['test'] == 'value1') ...

Ответ 2

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

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

<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1"> 

Ответ 3

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

<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(...

Ответ 4

Пусть ваш html для вашего флажка будет похож на

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

Затем, отправив форму, вам нужно проверить, как

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

    // Checkbox is selected
} else {

   // Alternate code
}

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

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

   // Checkbox is selected
} 

Ответ 5

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

Ответ 6

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

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

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

Подсказка: снимите флажок "checkbox", если вы хотите показать его как непроверенный по умолчанию

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

Ответ 7

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

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

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

//Check if checkbox is checked    
if(!empty($_POST['checkbox'])){
 #Checkbox selected code
} else {
 #Checkbox not selected code
}

Ответ 8

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

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

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

}

Ответ 9

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

Пример:

    if(isset($_POST["testvariabel"]))
     {
       echo "testvariabel has been set!";
     }

Ответ 10

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


//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[]" />

....

Секрет просто обновляет все значения VALUES сначала (в этом случае до 0), и поскольку команда будет отправлять только проверенные значения, это означает, что все, что вы получаете, должно быть установлено в 1, поэтому все, что вы установите, равно 1.

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

Удачи:)

Ответ 11

$is_checked = isset($_POST['your_checkbox_name']) &&
              $_POST['your_checkbox_name'] == 'on';

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

Ответ 12

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

<?php

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

?>

<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>

Ответ 13

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

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

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

$check_value = $_POST['my_checkbox_name'] ?? 0;

Ответ 14

<?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>

Ответ 15

в BS3 можно поставить

  <?php
                  $checked="hola";
                  $exenta = $datosOrdenCompra[0]['exenta'];
                  var_dump($datosOrdenCompra[0]['exenta']);
                  if(isset($datosOrdenCompra[0]['exenta']) and $datosOrdenCompra[0]['exenta'] == 1){

                      $checked="on";

                  }else{
                    $checked="off";
                  }

              ?>
              <input type="checkbox" id="exenta" name="exenta" <?php echo $checked;?> > <span class="label-text"> Exenta</span>

Обратите внимание на использование isset($datosOrdenCompra[0]['exenta'])

Ответ 16

вход фильтра (INPUT_POST, 'checkbox_name', FILTER_DEFAULT, FILTER_FORCE_ARRAY)

Ответ 17

<?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']);
} 

?>