Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何读取PHP中是否选中复选框?_Php_Html_Forms_Post_Checkbox - Fatal编程技术网

如何读取PHP中是否选中复选框?

如何读取PHP中是否选中复选框?,php,html,forms,post,checkbox,Php,Html,Forms,Post,Checkbox,如何读取PHP中是否选中复选框?如果您的HTML页面如下所示: <input type="checkbox" name="test" value="value1"> 或 根据表单的操作,您可以在$\u POST或$\u GET数组中将相应的值检查为已设置且非空 i、 例如:对于使用“test”(即:)的名称的POST表单,您可以使用: if(isset($_POST['test']) { // The checkbox was enabled... } Zend Fram

如何读取PHP中是否选中复选框?

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

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


根据表单的操作,您可以在$\u POST或$\u GET数组中将相应的值检查为已设置且非空

i、 例如:对于使用“test”(即:
)的
名称的POST表单,您可以使用:

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

}

Zend Framework对复选框进行了很好的破解,您也可以自己进行:

生成的每个复选框都与一个同名的隐藏字段相关联,该字段位于复选框的正前方,值为“0”。如果您的复选框为值“1”,则在生成的get或POST中始终会得到“0”或“1”值

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

让您的复选框的html如下

<input type="checkbox" name="check1">
假设
check1
应该是您的复选框名称。如果您的表单提交方法是
GET
,那么您需要使用
$\u GET
变量进行检查,如

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

   // Checkbox is selected
} 

了解
isset
,它是一个内置的“函数”,可以在if语句中使用,以告知是否使用或设置了变量

例如:

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

以上示例仅在您希望插入值时有效,对于将不同的值更新到不同的列不有用,因此下面是我更新的小技巧:


//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();}

        }
}

秘密在于首先更新所有值(在本例中为0),并且由于只发送已检查的值,这意味着您得到的所有值都应设置为1,因此您得到的所有值都应设置为1

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


玩得开心:)

将复选框用作数组时:

<input type="checkbox" name="food[]" value="Orange">
<input type="checkbox" name="food[]" value="Apple">
请记住先检查数组是否已设置,例如:

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

要检查复选框是否已选中,请使用empty()

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

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

//Check if checkbox is checked    
if(!empty($_POST['checkbox'])){
 #Checkbox selected code
} else {
 #Checkbox not selected code
}
将注意不要在未提交时访问您的\u复选框\u名称。


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

开关位置保持的最小布尔检查

<?php

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

?>

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


如果满足以下条件,您可以使用短代码:

$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
或者使用新的PHP7
Null合并运算符

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

我已经使用这个技巧好几年了,它在与PHP和数据库一起使用时,对于选中/未选中的复选框状态没有任何问题

HTML代码:(用于添加页面)

提示:除非用户选中,否则将始终存在空值。因此,我们已经有PHP代码来捕获它,否则将值保持为0。然后,只需对数据库使用$status变量。


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


filter\u input(input\u POST,'checkbox\u name',filter\u DEFAULT,filter\u FORCE\u ARRAY)

Wordpress具有
选中()功能。
参考:

描述 比较前两个参数,如果相同,则标记为选中

参数 美元支票 (混合)(必需)要比较的值之一

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

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

返回#返回 (字符串)html属性或空字符串
<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','');
?>

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

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”

复选框在选中时也可以有值
。因此,为了兼容性,只需使用
isset($\u POST['checkboxName'])
就更容易了。如果未设置value属性,某些浏览器可能支持“on”值,但一般来说,最好设置value属性并在提交时检查它。如果选中该框,“Value1”是否会更改?@Developer\u ACE除非我误解了您,否则如果选中该复选框,本例中的值将为
Value1
。如果未选中,
$\u POST['test']
将根本不存在。如果使用serialize提交,请执行此操作。var checkbox1_data=$(“#checkboxinput_id”).prop(“checked”)==false?“0”:“1”;var data=$(“#formveri”).serialize()+”&a=“+checkbox1_数据;我也注意到了这一点,但我觉得使用它很安全:Zend Framework也这么做!这很有趣。但是,如果选中复选框,用户代理提交第一个值而不是最后一个值的可能性很小吗?@rybo111,对于用户代理,我不这么认为,但是对于自定义javascript表单解析器,您应该小心。对不起,有人能解释一下它是如何工作的吗?我不明白。如果始终只提交最后一个值(输入[type=“checkbox”]
的值),为什么会显示隐藏字段?如果复选框未选中,则不会在post中传输(因此只传输隐藏字段)。当它被检查时,它被传输,并将覆盖隐藏的值。非常快速和非常聪明的解决方案,我看到了帮助来堆栈溢出!虽然这个代码片段可以解决这个问题,但它没有解释为什么或者如何回答这个问题。请,因为这确实有助于提高你的文章质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。标记者/评论者:给出答案时,最好给出正确答案。当你回答一个非常老的帖子11其他答案时,这一点尤其正确。你认识到复选框需要保持它的状态,这是很好的。但是,您执行此操作的代码不正确。此问题实际上表示“已检查”(提交表单时)。PHP确定是否选中复选框需要在元素切换后调用Ajax。如果未选中复选框,则不会发布该复选框,因此现在将始终设置该复选框。^不*始终设置这是真正的问题
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
$check_value = $_POST['my_checkbox_name'] ?? 0;
<input name="status" type="checkbox" value="1" checked>
<input name="status" type="checkbox" value="1" 
<?php if ($row['status'] == 1) { echo "checked='checked'"; } ?>>
$status = $_POST['status'];
if ($status == 1) {
$status = 1;
} else {
$status = 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>
  <?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>
checked( mixed $checked, mixed $current = true, bool $echo = true )
<form>
<input type="check" id=chk1 value="1">
<input type="check" id=chk2 value="1">
<input type="check" id=chk3 value="1">
</form>
<?php
foreach($_POST as $key=>$value)
{
    if(isset($key))
        $$key=strip_tags($value);
}
insert into table (chk1,chk2,chk3) values ('','1','');
?>
Array
(
    [shch] => on
    [foch] => on
    [ins_id] => #
    [ins_start] => شروع گفتگو
    [ins_time] => ما معمولاً در چند دقیقه پاسخ میدهیم
    [ins_sound] => https://.../media/sounds/ding-sound-effect_2.mp3
    [ins_message] => سلام % به کمک نیاز دارید؟
    [clickgen] => 
)