大家早,
我有一个表单,用于一次将多行添加到数据库中。除了复选框之外,这一切似乎都工作正常。每个表单行都有一个复选框。无论勾选复选框的顺序如何,提交后的结果总是以相同的顺序返回。
这是表格的主要部分:
<tr>
<td class='border'>
<input type='text' name='rowid[]' value='".$row."' style='display:none;' />
<input type='text' name='ref[]' style='width:100%;' />
</td>
<td class='border'>
<input type='text' name='obs[]' style='width:100%;' />
</td>
<td class='border'>
<input type='text' name='act[]' style='width:100%;' />
</td>
<td class='border' align='center'>
<input type='checkbox' name='comp[]' value='Yes' />
</td>
<td class='border'>
<input type='text' name='compby[]' style='width:100%;' />
</td>
<td class='border'>
<input type='text' name='compdate[]' id='completeddate".$row."' class='completeddate' style='width:100%;' />
</td>
</tr>
这个表单被提交,我的 PHP 代码处理它。您可以看到第一个输入是表单行的 ID。这是一个隐藏字段,表单中显示的每一行的值都会增加一。
提交表单后,我使用下面的 PHP 来处理每一行,一次一个
foreach($_POST['rowid'] as $key=>$rowid) {
这基本上应该说对于一个rowid,其余的输入是关联的,直到它到达下一个rowid。
如果我要打印说
echo $_POST['ref'][$key];
我将获得第一行的引用,然后一旦循环完成并再次打印,我将获得第二行的引用,依此类推。
但是,如果我要放
echo $_POST['comp'][$key];
然后这就是它破裂的地方。
例如,对于每一行,我按以下顺序勾选复选框:
row 1, tick, row 2, untick, row 3, tick
如果我让循环打印出所有复选框值,它将显示
'Yes', 'Yes', ''
但应该是这个顺序
'Yes', '', 'Yes'
这是因为复选框无论如何都是一个普通的数组,然后我通过给它命名为 comp[] 将它放入另一个数组?
无论如何,这个问题是否存在,或者我最好使用单选按钮,一个代表是,一个代表否?
非常感谢
编辑