gpt4 book ai didi

php - Codeigniter 使用复选框删除多行

转载 作者:可可西里 更新时间:2023-11-01 07:31:28 24 4
gpt4 key购买 nike

我正在尝试通过在收件箱中选中多个复选框并单击提交以删除来从我的数据库中删除多条私有(private)消息。我有下面的代码,但没有任何反应。我不确定我错过了什么..

查看:

<?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>

Controller :

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() 方法中,您将在“找到”第一条消息后立即返回ing FALSE t 存在,这将防止其余消息被删除,因为 return 将停止循环的执行。如果您想这样做,请改用 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() 应该 返回删除的消息数。如果您想确保删除所选的所有 条消息,您可以将其与 count($message_ids) 进行比较,或者使用此示例方法仅检查是否至少有一条消息被删除删除。如果消息不存在,则无论如何都不需要将其删除。

All the stuff Chris Schmitz mentioned是正确的,也很重要,你有一些非常基本的错误。如果您希望传递单个 id(整数或字符串)到这个函数。像这样:

$message_ids = (array) $message_ids;

关于php - Codeigniter 使用复选框删除多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7178605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com