2009-07-04 54 views
1

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

回答

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

直视$ _ POST [ '数据行']:这将是一个数组,其值为$ dataRow的IDS,因此使用array_values$ _POST ['dataRo W']会给你所选行的所有ID:

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

点击帮助图标:http://stackoverflow.com/editing-help – deceze 2009-07-04 13:00:55

5

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

<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。

1

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

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

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

0

如果我是你......我不会为改变html表格结构而战。 你可以使用Javascript框架来处理这个问题,比如JQuery这对你来说是非常有效的解决方案。你只处理几行JS代码,你不需要夸大html输出(我猜它可能足够长)。关于jquery,如果你从未使用过,有一个名为visual jquery的好源代码。

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

通常我已经添加了许多链接到帖子,但它表示它不允许新用户。