【问题标题】:PHP - getting key and value using checkboxPHP - 使用复选框获取键和值
【发布时间】:2017-06-10 17:43:25
【问题描述】:
    Documents     Original            Xerox
-------------------------------------------------
    ABC          <checkbox>          <checkbox>
    DEF          <checkbox>          <checkbox>
    XYZ          <checkbox>          <checkbox>

如您在上面看到的,我有一个复选框结构。 但我不确定,我想如何实现它。 我知道普通复选框的工作原理,因为它只有一个复选框。 但是在这种情况下,对于每个文档,都有 2 个复选框(original 副本和 xerox 副本)

我的想法是,点击提交后,我需要以某种方式获取如下形式的数组

ABC -> [1][1]
DEF -> [0][1]
XYZ -> [1][0]

第一个[]原始,第二个[]xerox。 其中1 表示已选中,0 表示未选中。

我不知道应该如何实现它。 这是我的代码……(这可能是非常错误的,我同意……但我仍然尝试了……但无法弄清楚。)

<table>
  <tr>
  <td>Aadhar</td>
  <td><input type="checkbox" name="document[]" value="1"/></td>
  </tr>
  <tr>
  <td>Pan Card</td>
  <td><input type="checkbox" name="document[]" value="1"/></td>
  </tr>
  <tr>
  <td>Address</td>
  <td><input type="checkbox" name="document[]" value="1"/></td>
  </tr>
  <tr>
  <td>Light Bill</td>
  <td><input type="checkbox" name="document[]" value="1"/></td>
  </tr>
  <tr>
  <td><input type="submit" value="Submit" /></td>
  </tr>
</table>

PHP

$documents = $_POST['document'];
$a = implode($documents);
echo $a;

到目前为止,我得到了正确的1(值)。但我还需要'1'(值)所属的document(键)。 谁能帮帮我。

【问题讨论】:

    标签: php html checkbox


    【解决方案1】:

    Checkboxes only submit WHEN CHECKED,因此您永远不会收到提交“0”值的复选框。

    也就是说,您可以通过简单地询问 PHP 是否设置了它来知道它没有被检查,如下所示:isset($_POST['document']['aadhar'][1]) -- 如果返回 true,则已检查,否则,则未检查。

    需要注意的一点:您将要为数组的第二维指定索引,因此:

    <td><input type="checkbox" name="document[aadhar][]" value="1"/></td>
    

    变成这样:

    <td><input type="checkbox" name="document[aadhar][original]" value="1"/></td>
    

    这样您就可以通过询问isset() 来跟踪选中了哪个复选框的“列”。

    这是一个工作示例:http://myingling.com/random/random/44476276/

    这是该示例中的 HTML:

    <form action='post.php' method='post'>
       <table>
         <tr>
          <td>Aadhar</td>
          <td><input type="checkbox" name="document[aadhar][col1]" value="1"/></td>
          <td><input type="checkbox" name="document[aadhar][col2]" value="1"/></td>
        </tr>
        <tr>
          <td>Address</td>
          <td><input type="checkbox" name="document[light][col1]" value="1"/></td>
          <td><input type="checkbox" name="document[light][col2]" value="1"/></td>
        </tr>
        <tr>
          <td><input type="submit" value="Submit" /></td>
        </tr>
      </table>
    </form>
    

    这是来自post.php的PHP:

    <?php
    echo "<pre>";
    var_dump($_POST);
    echo "</pre>";
    

    【讨论】:

    • 我可以用这个代替吗, 然后我会用 isset() 检查它是否设置。
    • 绝对! var_dump($_POST);
    • 实际上,它不起作用 [adhaar][].. 我认为它不接受。只接受文件[]
    • 您是否使用POST 提交表单?这是一个工作示例:myingling.com/random/random/44476276 你的 HTML 中确实有一个 &lt;form&gt; 元素,对吧?
    • 是的,一切都很好。使用过 POST。是的,这正是我所需要的 :) 你能编辑你的答案,并将代码连同它一起发布吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 2018-08-25
    • 2012-12-20
    • 2014-09-05
    • 1970-01-01
    • 2016-07-03
    相关资源
    最近更新 更多