我的表单中有复选框,它会返回字符串而不是数组,就像它应该的那样。谁能告诉我我的代码有什么问题?
以下是视图中的代码:
<?php echo form_open('backOfficeUsers/deleteMoreUsers');?>
<table border="0" cellpadding="4" cellspacing="1" bgcolor="#02659E" width="500">
<tr bgcolor="#E9E8ED">
<td align="center">
<b>User ID</b>
</td>
<td align="center">
<b>User Name</b>
</td>
<td align="center">
<b>Password</b>
</td>
<td align="center">
<b>Select for delete</b>
</td>
<td align="center">
<b>Delete</b>
</td>
</tr>
<?php
foreach ($users as $key => $user)
{
echo form_open('backOfficeUsers/deleteUser');
echo form_hidden('dpage', 'backOfficeUsers/displayAllUsers');
echo form_hidden('rid', $user['id']);
echo"<tr bgcolor='#E9E8ED'>";
echo "<td>" . anchor("backOfficeUsers/displayEditUserForm/$user[id]/", $user['id']) . "</td>";
echo "<td>" . $user['username'] . "</td> ";
echo "<td>" . $user['password'] . "</td> ";
echo "<td>" . form_checkbox('userdelete[]', $user['id']) . "</td> ";
$confirm = "onclick='return confirmSubmit();'";
echo"<td>";
echo form_submit('submit', 'Delete', $confirm);
echo"</td></tr>";
echo form_close();
}
?>
</table>
<?php echo form_submit('submit', 'Delete All Selected Users');?>
<?php echo form_close();?>
</div>
当我从我的控制器进行var转储时,我得到字符串string(3)“200”(而200是行id。
以下是控制器的代码:
foreach ($this->input->post('userdelete') as $row){
$deleteWhat = $row;
var_dump($deleteWhat);
die();
}
此打印字符串(3)和第一行的ID。
答案 0 :(得分:1)
您有嵌套的<form>
标记,这些标记无效且容易出现意外行为,您必须先修复(高优先级)。我不知道你需要删除哪一个,因为我不知道你的应用程序,但看起来foreach
里面的那些不应该在那里,否则你不需要发布一个价值数组。
无论如何,假设不是的情况......
如果这是您的代码:
foreach ($this->input->post('userdelete') as $row){
$deleteWhat = $row;
}
然后每次迭代中的$deleteWhat
包含已发布的字符串,无论该复选框的value
中是什么。
这个是数组:
$this->input->post('userdelete')
它包含从form_checkbox('userdelete[]', $user['id'])
您的代码运行正常。
请记住以下几点:
<input name="somename[]">
将作为值数组发布。$_POST['somename']
等于$this->input->post('somename')
,除非未设置该值(第一个生成未定义的变量通知,第二个返回FALSE
)<input name="somename[hello]">
<input name="somename[hello][]">
将发布一系列数组等