【问题标题】:How to loop through checkboxes when they're ticked with other values linked当它们被链接的其他值勾选时如何循环通过复选框
【发布时间】:2013-03-27 23:52:43
【问题描述】:

我似乎无法正确处理我拥有的这份清单。我有 x 个表,行数在 10 到 200 之间。每一行代表一个项目,如果您选择一个或多个复选框,它会循环遍历这些复选框并在需要时更新/添加/删除行。我该怎么做呢?

我目前有一个带有 id[] 的隐藏字段,以及两个带有 own[] 和 special[] 的复选框。 ID 显然是唯一的项目 ID,两个复选框代表您拥有普通版本还是特殊版本(或没有,或两者兼有)。当我遍历它们时,所有 ID 都会回显,但我似乎无法将两个复选框的值连接到它们。一个简单的 for 循环将不起作用,因为所有 ID 都已回显,因此复选框未正确循环。

我对 PHP 有点了解,所以用你所掌握的来打我吧!

【问题讨论】:

    标签: php arrays loops checkbox hidden


    【解决方案1】:

    您应该尝试制作二维数组(如果我理解得很好的话)。你也可以忘记隐藏字段:

    checkboxes[<?= $id ?>][own]checkboxes[<?= $id ?>][special]。你应该在 php 中有这样一个数组:

    $_POST['checkboxes'] => array(
                             1 => array(
                                  'own' => 'on'
                             ),
                             3 => array(
                                  'own' => 'on',
                                  'special' => 'on
                             )
                        );
    

    在这里,您已选中 id "1" 的 "own" 复选框以及 id "3" 的 "own" 和 "special" 复选框。

    【讨论】:

    • 很好,很清楚。使用 foreach(* as $c) {} 循环遍历 $_POST['checkboxes'],但是如何获取它的全部 ID?我得到 ["own"] = "on",但不知道如何找到那个珍贵的 ID。 :(
    • 糟糕,终于明白了。而不是使用 foreach($_POST['checkboxes'] as $c) {},这会使您无法检索复选框的原始 ID,而是使用 foreach($_POST['checkboxes'] as $id => $c ) {},其中 $id 作为 KEY 值,$c 是实际内容。感谢您帮助我走上正轨!
    【解决方案2】:

    最终产品:

    <input type="checkbox" name="product[<?php echo $product['id']; ?>][own]" /> <!-- this is row 20 of the database -->
    <input type="checkbox" name="product[<?php echo $product['id']; ?>][own]" /> <!-- row 64 -->
    <input type="checkbox" name="product[<?php echo $product['id']; ?>][special]" /> <!-- row 127 -->
    

    提交后,此代码:

    foreach($_POST['product'] as $id => $p) {
        echo "ID: ".$id." - Own: ".$p['own']." - Special: ".$p['special']."<br />";
    }
    

    会产生这个结果:

    ID: 20 - Own: on - Special:
    ID: 64 - Own: on - Special: 
    ID: 127 - Own: - Special: on
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-05
      相关资源
      最近更新 更多