How to read if a checkbox is checked in PHP?

2018-12-31 15:18发布

问题:

How to read if a checkbox is checked in PHP?

回答1:

If your HTML page looks like this:

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

After submitting the form you can check it with:

isset($_POST[\'test\'])

or

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


回答2:

Zend Framework use a nice hack on checkboxes, which you can also do yourself:

Every checkbox generated is associated with a hidden field of the same name, placed just before the checkbox, and with a value of \"0\". Then if your checkbox as the value \"1\", you\'ll always get the \'0\' or \'1\' value in the resulting GET or POST

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


回答3:

When using checkboxes as an array:

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

You should use in_array():

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

Remember to check the array is set first, such as:

if(isset($_POST[\'food\']) && in_array(...


回答4:

Let your html for your checkbox will be like

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

Then after submitting your form you need to check like

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

    // Checkbox is selected
} else {

   // Alternate code
}

Assuming that check1 should be your checkbox name.And if your form submitting method is GET then you need to check with $_GET variables like

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

   // Checkbox is selected
} 


回答5:

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


回答6:

You can check the corresponding value as being set and non-empty in either the $_POST or $_GET array depending on your form\'s action.

i.e.: With a POST form using a name of \"test\" (i.e.: <input type=\"checkbox\" name=\"test\"> , you\'d use:

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

}


回答7:

Learn about isset which is a built in \"function\" that can be used in if statements to tell if a variable has been used or set

Example:

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


回答8:

Well, the above examples work only when you want to INSERT a value, not useful for UPDATE different values to different columns, so here is my little trick to 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[]\" />

....

The secret is just update all VALUES first (in this case to 0), and since the will only send the checked values, that means everything you get should be set to 1, so everything you get set it to 1.

Example is PHP but applies for everything.

Have fun :)



回答9:

To check if a checkbox is checked use empty()

When a form is submitted, the checkbox will ALWAYS be set, because ALL POST variables will be send with the form.

Check if checkbox is checked with empty as followed:

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


回答10:

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

Short circuit evaluation will take care so that you don\'t access your_checkbox_name when it was not submitted.



回答11:

A minimalistic boolean check with switch position retaining

<?php

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

?>

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


回答12:

You can do it with the short if:

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

or with the new PHP7 Null coalescing operator

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


回答13:

I\'ve been using this trick for several years and it works perfectly without any problem for checked/unchecked checkbox status while using with PHP and Database.

HTML Code: (for Add Page)

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

Hint: remove \"checkbox\" if you want to show it as unchecked by default

HTML Code: (for Edit Page)

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

PHP Code: (use for Add/Edit pages)

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

Hint: There will always be empty value unless user checked it. So, we already have PHP code to catch it else keep the value to 0. Then, simply use the $status variable for database.



回答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:

in BS3 you can put

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

Please Note the usage of isset($datosOrdenCompra[0][\'exenta\'])



回答16:

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

?>