在PHP

时间:2016-04-07 14:48:49

标签: php html html-table

我从SQL Select语句生成一个表,但也在每一行上添加一个复选框,以便可以选择行,但我无法解决如何遍历此生成的每一行表格以查看是否已选中此框。

这可能吗?

我知道如何创建表格,填充表格以及如何检查按钮,我只是不知道如何访问每行按钮所在的单元格。

在循环遍历SQL SELECT

的行时,我无法单独创建每个复选框,因为它们与表一起创建

2 个答案:

答案 0 :(得分:0)

如果您想使用收音机按钮,请在名称后添加[],将输入与数组链接在一起。即<input type="radio" name="foo[]" /> 然后,您可以使用foreach循环访问该数组。

如果您想使用检查 -box,请在数组中为[]提供相同的名称,并为每个value属性提供不同的名称。即<input type="checkbox" name="foo" value="1" /> 您可以使用foreach循环访问值。

(在这两种情况下,你需要在每个单选按钮之前的隐藏输入中使用默认值。否则你的数组是不可能使用的,因为php只读取选定的单选按钮。)

答案 1 :(得分:0)

首先,我承认这不是解决此问题的最佳方式,但它会解决您的问题。

其次,我建议您将HTML Input元素更改为type="checkbox"。为了能够知道哪些已经过检查,您需要调整代码,使其如下所示:

<!-- HTML part -->
<form action="" method="post">
    <!-- we need the form as the parent to the table so content can be posted to the server -->
    <table ....>
        <thead>
            <tr>
                <th>&nbsp</th> <!-- we'll put our checkboxes in this column of the table -->
                ...
            </tr>
        </thead>
        <tbody>
            <?php
                foreach ($rows as $row) {
            ?>
            <tr>
                <td><input type="checkbox" name="chkSelect[]" value="<?php echo $row['id']; ?>" /></td>
                ....
            </tr>
            <?php
                }
            ?>
        </tbody>
    </table>
    <button type="submit" name="btnDelete" value="">Delete</button> <!-- This is assuming we're trying to delete the selected items -->
</form>
<!-- HTML end -->

此时,我们准备好了表格;请注意,复选框名称后面有[],这允许它在PHP端作为数组处理。在PHP方面,您只需要进行正常的表单处理,如下所示:

if (filter_has_var(INPUT_POST, 'btnDelete')) {
    $checkedIds = filter_input(INPUT_POST, 'chkSelect', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
    // if we loop through the array, we can see the selected item ids
    var_dump($checkedIds);
}