【问题标题】:Enumerate all Check Box in PHP枚举PHP中的所有复选框
【发布时间】:2009-07-04 12:48:21
【问题描述】:

我有一个 PHP 网页,它在一个表格中显示所有记录。我想为所有行添加复选框,用户可以选中一个复选框来选择一行,然后提交页面。提交页面时我想枚举所有复选框并检查它们是否被选中,我该怎么做?

【问题讨论】:

    标签: php


    【解决方案1】:

    您将像这样创建您的复选框:

    <input name="rows[]" value="uniqueIdForThisRow" type="checkbox" />
    <input name="rows[]" value="anotherId" type="checkbox" />
    

    然后你可以像这样循环遍历它们:

    <?php
        // $_POST['rows'] contains the values of all checked checkboxes, like:
        // array('uniqueIdForThisRow', 'anotherId', ...)
    
        foreach ($_POST['rows'] as $row) {
            if ($row == 'uniqueIdForThisRow') {
                // do something
            }
        }
    ?>
    

    PHP docs on dealing with forms,请参见示例 #3。

    【讨论】:

      【解决方案2】:

      创建表单

      您可以按如下方式生成 HTML:

      <form [action, method etc]>
        <table>
        <?php 
          foreach($dataSet as $dataRow) : 
        ?>
            <tr>
               <td>
                  <input type="checkbox" name="dataRow[]" value="<?=$dataRow['id']?>"/>
               </td>
               [Additional details about datarow here]
            <tr>
        <?php 
          endforeach; 
        ?>
        </table>
      </form>
      

      发布后

      查看 $_POST['dataRow'] :这将是一个数组,其值是 $dataRow 的 IDS,因此在 $_POST['dataRow'] 上使用 array_values 将为您提供所选行的所有 id:

      <?php
         $checkedRows = array_values($_POST['dataRow']);
         foreach($checkedRows as $row) {
            // Do whatever you want to do with the selected row
         }
      

      【讨论】:

        【解决方案3】:

        如果已选中所有复选框,则不必选中它们。因为只有successful controls 被发送到服务器。并且一个复选框只有在被选中时才成功:

        复选框(和单选按钮)是可由用户切换的开/关开关。当设置了控制元素的选中属性时,开关处于“打开”状态。提交表单时,只有“on”复选框控件才能成功。

        所以你只需要看看你在请求中得到了哪些复选框。如果您想使用&lt;select multiple&gt;,请查看PHP FAQ 中的How do I get all the results from a select multiple HTML tag?

        【讨论】:

          【解决方案4】:

          如果我是你...我不会与改变 html 表结构作斗争。 你可以使用像 JQuery 这样的 JavaScript 框架来处理这个问题,这对你来说是非常有效的解决方案。你只处理几行 JS 代码,你不需要夸大 html 输出(我想它可能已经足够长了)。关于 jquery,如果您从未使用过它,那么有一个名为 visual jquery 的好资源。

          这里是如何做到这一点的方法。 您不需要在循环内进行编辑。您只需在表格标签中添加一个 id。 然后将新列添加到您的表格中,并在其中添加复选框。 然后您可以获取复选框的值并将它们序列化到隐藏的输入中。或者您可以使用 ajax 轻松处理选定的行。我认为 JS 框架会更好。

          通常我已经添加了许多发布链接,但它说它不允许新用户使用。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-12-21
            • 1970-01-01
            • 2016-03-13
            • 2017-03-25
            • 2010-12-01
            • 1970-01-01
            • 2015-10-03
            • 2012-11-16
            相关资源
            最近更新 更多