我从SQL Select语句生成一个表,但也在每一行上添加一个复选框,以便可以选择行,但我无法解决如何遍历此生成的每一行表格以查看是否已选中此框。
这可能吗?
我知道如何创建表格,填充表格以及如何检查按钮,我只是不知道如何访问每行按钮所在的单元格。
在循环遍历SQL SELECT
的行时,我无法单独创建每个复选框,因为它们与表一起创建答案 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> </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);
}