php – Codeigniter使用复选框删除多行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Codeigniter使用复选框删除多行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2395字,纯文字阅读大概需要4分钟。
内容图文
![php – Codeigniter使用复选框删除多行](/upload/InfoBanner/zyjiaocheng/799/434d5a5a71a6455fb6721c17645f7cc2.jpg)
我正在尝试通过在收件箱中选中多个复选框并单击提交以删除来从我的数据库中删除多个私人消息.我有下面的代码,但没有任何反应.我不确定我错过了什么..
视图:
<?php echo form_open('pm/remove_checked'); ?>
<?php foreach ($query as $row): ?>
<input type="checkbox" name="msg[]" value="<?php echo $row->id; ?>" />
<?php echo $row->from; ?>
<?php echo $row->subject; ?>
<?php echo date("m/d/Y",strtotime($row->msg_date)); ?>
<?php endforeach; ?>
<?php echo form_submit('delete', 'Delete'); ?>
</form>
控制器:
function remove_checked()
{
//validation rules
$this->form_validation->set_rules('msg[]', 'Private Message', 'required|xss_clean');
if ($this->form_validation->run() == FALSE)
{
$data['query'] = $this->Pm_model->received_msg();
$this->load->view('pm/inbox', $data);
}
else //success
{
$checked_messages = $this->input->post('msg'); //selected messages
$this->Pm_model->delete_checked($checked_messages);
//redirect to inbox
}
}
模型:
function delete_checked($checked_messages)
{
$checked_messages = array();
foreach ($checked_messages as $msg_id):
$this->db->select('id');
$this->db->from('user_msg');
$this->db->where('id', $msg_id);
$this->db->limit(1);
$query = $this->db->get();
if ($query->num_rows() > 0) //if message exists
{
$this->db->where('id', $msg_id);
$this->db->where('recipient', $this->users->get_user_id()); //verify if recipient id is equal to logged in user id
$this->db->delete('user_msg');
}
else
{
return FALSE;
}
endforeach;
}
解决方法:
在当前的delete_checked()方法中,只要第一条消息“找不到”就会返回FALSE,这将阻止其余的消息被删除,因为返回将停止执行循环.如果您想这样做,请改用continue,并考虑使用transactions.
如果您不特别关心为每条消息生成单个错误,您的模型函数可以简化一下:
function delete_checked($message_ids)
{
$this->db
->where_in('id', $message_ids)
->where('recipient', $this->users->get_user_id())
->delete('user_msg');
return $this->db->affected_rows() > 0;
}
这只会尝试删除记录.如果它们不存在,它们将被忽略,$this-> db-> affected_rows()应该返回已删除的消息数.如果要确保删除所有选定的消息,或者使用此示例方法仅检查是否至少删除了一条消息,则可以将其与c??ount($message_ids)进行比较.如果该消息不存在,则无论如何都不需要删除它.
All the stuff Chris Schmitz mentioned也是正确和重要的,你有一些非常基本的错误.如果您希望将一个id(整数或字符串)传递给此函数,您可能希望转换为数组而不是将$checked_messages分配给空数组.像这样:
$message_ids = (array) $message_ids;
内容总结
以上是互联网集市为您收集整理的php – Codeigniter使用复选框删除多行全部内容,希望文章能够帮你解决php – Codeigniter使用复选框删除多行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。