Codeigniter 为什么从复选框中获取字符串而不是数组?
我的表单中有复选框,它返回的是字符串而不是数组。谁能告诉我我的代码有什么问题吗 以下是视图中的代码:Codeigniter 为什么从复选框中获取字符串而不是数组?,codeigniter,Codeigniter,我的表单中有复选框,它返回的是字符串而不是数组。谁能告诉我我的代码有什么问题吗 以下是视图中的代码: <?php echo form_open('backOfficeUsers/deleteMoreUsers');?> <table border="0" cellpadding="4" cellspacing="1" bgcolor="#02659E" width="500"> <tr bgcolor=
<?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>
这是打印字符串(3)和第一行的id。编辑:我刚刚捕捉到: 您有嵌套的
标记,该标记无效且容易出现意外行为,您必须首先修复该标记(高优先级)。我不知道您需要删除哪一个,因为我不知道您的应用程序,但看起来foreach
中的那些不应该在那里,否则您不需要发布一个值数组
无论如何,假设不是这样的话
如果这是您的代码:
foreach ($this->input->post('userdelete') as $row){
$deleteWhat = $row;
}
然后,每个迭代中的$deleteWhat
包含已发布的字符串,无论该复选框的值中有什么内容
这是阵列:
$this->input->post('userdelete')
它包含从form_复选框('userdelete[]',$user['id'])发布的所有内容。
你的代码运行良好
记住几件事:
由于括号的缘故,将作为值数组发布
$\u POST['somename']
等于$this->input->POST('somename')
,除非未设置值(第一个生成未定义的变量通知,第二个返回FALSE
)
- 您可以指定如下键:
将发布一组数组等
- 除非选中复选框,否则不会发布任何内容
您没有显示分配给$deleteWhat
。。。我们怎么知道它应该包含什么呢?很抱歉这个错误…foreach($this->input->post('userdelete')as$row){$deleteWhat=$row;}我刚刚注意到你在另一个form_open()
内部有form_open()
这会把事情搞砸,你意识到了吗?'code'$deleteWhat=$this->input->post('userdelete');var_dump($deleteWhat);死亡();'代码'产生这个:数组(1){[0]=>string(3)“200”}在我看来是正确的,不确定你看到它有什么错,它是一个数组,有一个项:字符串“200”。我建议你发表你的文章,而不是把你的代码放在无法理解的地方。你注意到嵌套的
标记了吗?我知道我在表单中有表单…第一个是删除所有选定的用户,第二个是只删除一个用户。我需要两者,这样用户可以删除一个或多个记录。我的代码中的问题是,即使我选中3个或更多复选框,我总是只得到第一个选中的复选框,而不是其余的复选框……但你不能这样写。表单不能位于HTML中的其他表单中,如果这样做,您将得到奇怪的结果。您只得到一个项,因为一旦解析器看到
,外部项就被关闭。我同情你的事业,但你需要找到另一种方式来做。对不起,不是我的规则。那么,我现在有哪些选择呢?使用jquery获取所有选中的复选框?
$this->input->post('userdelete')