如果在PHP中选中复选框,如何读取?

时间:2010-12-29 14:04:09

标签: php html forms post checkbox

如果在PHP中选中复选框,如何阅读?

18 个答案:

答案 0 :(得分:309)

如果您的HTML页面如下所示:

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

提交表格后,您可以查看:

isset($_POST['test'])

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

答案 1 :(得分:92)

Zend Framework在复选框上使用了一个很好的黑客,你也可以自己做:

生成的每个复选框都与同名的隐藏字段相关联,位于复选框之前,值为“0”。然后,如果您的复选框为值“1”,您将始终在生成的GET或POST中获得“0”或“1”值

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

答案 2 :(得分:49)

将复选框用作数组时:

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

答案 3 :(得分:5)

我已经使用这个技巧好几年了,在使用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变量来存储数据库。

答案 4 :(得分:3)

您可以在$ _POST或$ _GET数组中检查相应的值是否已设置且非空,具体取决于表单的操作。

即:使用name“test”的POST表单(即:<input type="checkbox" name="test">,您可以使用:

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

}

答案 5 :(得分:2)

了解isset这是一个内置的“函数”,可以在if语句中用于判断变量是否已被使用或设置

示例:

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

答案 6 :(得分:2)

好吧,上面的例子只有在你想要INSERT一个值时才有用,对于不同的值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。 / p>

示例是PHP,但适用于所有内容。

玩得开心:)

答案 7 :(得分:2)

要检查是否选中了复选框,请使用清空()

提交表单后,复选框将始终设置,因为所有 POST 变量将与表单一起发送。

检查复选框是否选中为空,如下所示:

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

答案 8 :(得分:1)

保留开关位置的简约布尔检查

<?php

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

?>

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

答案 9 :(得分:1)

<form>
<input type="check" id=chk1 value="1">
<input type="check" id=chk2 value="1">
<input type="check" id=chk3 value="1">
</form>

当您检查 chk2 时,您可以看到以下值:

<?php
foreach($_POST as $key=>$value)
{
    if(isset($key))
        $$key=strip_tags($value);
}
insert into table (chk1,chk2,chk3) values ('','1','');
?>

答案 10 :(得分:1)

您可以使用短if:

docker -H tcp://localhost:4322 ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

或使用新的PHP7 $check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;

Null coalescing operator

答案 11 :(得分:1)

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

Short circuit evaluation会注意,以便在未提交时{0}访问your_checkbox_name

答案 12 :(得分:0)

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

答案 13 :(得分:0)

在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'])

的用法

答案 14 :(得分:0)

filter_input(INPUT_POST,'checkbox_name',FILTER_DEFAULT,FILTER_FORCE_ARRAY)

答案 15 :(得分:0)

WordPress具有git describe功能。 参考:https://developer.wordpress.org/reference/functions/checked/

checked()

说明 比较前两个参数,以及是否选中相同的标记

参数 $已检查 (混合)(必需)要比较的值之一

$ current (混合)(可选)(真)要比较的其他值(不只是真) 默认值:true

$ echo (布尔)(可选)是回显还是仅返回字符串 默认值:true

返回#返回 (字符串)html属性或空字符串

答案 16 :(得分:-1)

你应该为你的输入命名。 然后点击哪个框,您将在选择方法中收到“on”

Array
(
    [shch] => on
    [foch] => on
    [ins_id] => #
    [ins_start] => شروع گفتگو
    [ins_time] => ما معمولاً در چند دقیقه پاسخ میدهیم
    [ins_sound] => https://.../media/sounds/ding-sound-effect_2.mp3
    [ins_message] => سلام % به کمک نیاز دارید؟
    [clickgen] => 
)

我的表单名称中有两个复选框,分别是“shch”和“foch”

答案 17 :(得分:-3)

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

?>