【问题标题】:How to get a list of unchecked checkboxes when submitting a form?提交表单时如何获取未选中复选框的列表?
【发布时间】:2011-02-26 22:23:41
【问题描述】:

我有这个代码例如:

$b = "";
 while ($row = mysql_fetch_array($rows)) {
        if ($row['enabled'] == 1) {
                    $b = "checked";
              } else {
                     $b = "":
                     }

echo "";

}

当我执行这段代码时,我会得到一个复选框列表,其中一些被选中,而另一些则没有。

我可以使用此代码获取选中复选框的列表。

 if (isset($_POST['sub'])) { //check if form has been submitted or not
$nam = $_POST['nam'];
if (!empty($nam)) {

              foreach($nam as $k=>$val){

    // proccess operation with checked checkboxes
               }

}           

我需要知道如何在提交表单后获取未选中复选框的列表。

提前致谢。

【问题讨论】:

    标签: php


    【解决方案1】:

    浏览器不会为未选中的框发送任何内容,因此您唯一的希望是创建一个隐藏字段,告诉您每个复选框的名称(或为每个复选框添加一个隐藏字段)。

    【讨论】:

    • 我不认为创建隐藏字段是个好主意,因为如果我的数据库中有 100 行,我将需要 100 个隐藏字段!!!
    • 然后创建一个隐藏字段,其中包含所有复选框/ID,用逗号分隔。
    • 创建此隐藏字段后,所有复选框/ID 用逗号分隔。我怎么知道那些未经检查的。
    • 您在表单的 POST 部分中拆分该字段,并从整个列表中减去复选框列表。
    【解决方案2】:

    如果复选框是动态创建的,这是一项简单的任务:

    创建命名约定。例如,假设每个复选框都绑定到数据库中的一行,数据库中的每一行都有一个主键。您可以根据此键命名每个复选框:

    现在提交表单后,您可以查询数据库以获取 Id 并按如下方式处理请求:

    $res = mysql_query("select * from foo;"); while($row = mysql_fetch_array($res)) $checked = isset($_POST["foo_{$row['id']}"); ... }

    【讨论】:

      猜你喜欢
      • 2014-04-04
      • 1970-01-01
      • 2013-01-21
      • 2016-03-30
      • 1970-01-01
      • 2012-05-23
      • 2013-09-22
      • 2023-02-17
      • 2018-06-16
      相关资源
      最近更新 更多