hri*_*riy 1 php mysql checkbox codeigniter
我的问题是将我的复选框发布到数据库.请帮我...
这是我的观点:
<table>
<tr>
<td>
<input type='hidden' name='userid[]' value='1'>
<input type='text' name='username[]' value='username1'>
</td>
<td>
<input type='checkbox' name='as_admin[]' value=1>
</td>
</tr>
<tr>
<td>
<input type='hidden' name='userid[]' value='2'>
<input type='text' name='username[]' value='username2'>
</td>
<td>
<input type='checkbox' name='as_admin[]' value=1>
</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
这是我的控制器:
$this->Model_user->insert_user();
Run Code Online (Sandbox Code Playgroud)
这是我的模特:
function insert_user(){
$user_count = count($this->input->post('userid'));
$userid = $this->input->post('userid');
$username = $this->input->post('username');
$as_admin = $this->input->post('as_admin');
for ($i=0; $i < $user_count; $i++){
$info_user = array(
'user_id' => $userid[$i],
'user_name' => $username[$i],
'as_admin' => $as_admin[$i],
);
$this->db->insert($info_user);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是'username2'标记为admin(选中第二行复选框),在数据库中将是这样的:
|user_id|user_name|as_admin|
| 1 |username1| 1 |
| 2 |username2| 0 |
Run Code Online (Sandbox Code Playgroud)
它应该是这样的:
|user_id|user_name|as_admin|
| 1 |username1| 0 |
| 2 |username2| 1 |
Run Code Online (Sandbox Code Playgroud)
现在有人如何保存这些东西,请...
提前致谢...
试试这个,在您的视图中,使用用户ID作为as_admin的键
<table>
<tr>
<td>
<input type='hidden' name='userid[]' value='1'>
<input type='text' name='username[]' value='username1'>
</td>
<td>
<input type='checkbox' name='as_admin[1]' value=1>
</td>
</tr>
<tr>
<td>
<input type='hidden' name='userid[]' value='2'>
<input type='text' name='username[]' value='username2'>
</td>
<td>
<input type='checkbox' name='as_admin[2]' value=1>
</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
在你的模型中
function insert_user(){
$user_count = count($this->input->post('userid'));
$userid = $this->input->post('userid');
$username = $this->input->post('username');
$as_admin = $this->input->post('as_admin');
for ($i=0; $i < $user_count; $i++){
$info_user = array(
'user_id' => $userid[$i],
'user_name' => $username[$i],
'as_admin' => isset($as_admin[$userid[$i]]) ? 1 : 0,
);
$this->db->insert($info_user);
}
}
Run Code Online (Sandbox Code Playgroud)
你遇到了这个问题,因为你只需要勾选1个复选框,只会传递选中的值,所以如果你计算$ as_admin,你只能得到2个as_admin中的1个.
如果你只给admin这个username2
那么你的帖子将如下
Array
(
[userid] => Array
(
[0] => 1
[1] => 2
)
[username] => Array
(
[0] => username1
[1] => username2
)
[as_admin] => Array
(
[2] => 1
)
)
Run Code Online (Sandbox Code Playgroud)