-1

我在codeigniter中学习CRUD。我有表名“posting”,列是这样的(id、title、post)。我成功创建了一个新帖子(插入数据库并显示在视图中)。但是当我在前端删除我的帖子时遇到问题。这是我的代码:

模型

Class Post_Model extends CI_Model{
  function index(){
     //Here is my homepage code
  }

  function delete_post($id)
  {
     $this->db->where('id', $id);
     $this->db->delete('posting');
  }
}

控制器

Class Post extends CI_Controller{
  function delete()
  {
     $this->load->model('Post_Model');
     $this->Post_Model->delete_post("id");

     redirect('Post/index/', 'refresh');
  }
}

在主页点击“删除”后,没有任何反应。当我查看我的数据库时,我的记录仍然可用。

注意:(1)删除记录,我按照codeigniter手册/用户指南,(2)我在前端点击“删除”按钮后发现消息错误(未定义变量:id)

任何帮助或建议,请

4

3 回答 3

2

您的问题是您没有发送对要删除的数据库中记录的引用

    Class Post extends CI_Controller{
  function delete()
  {
     $this->load->model('Post_Model');
     $this->Post_Model->delete_post("id");

     redirect('Post/index/', 'refresh');
  }
}

$this->Post_Model->delete_post("id");在这一行中,您需要发送对要删除的 ID 的引用,您发送的是字符串“id”,因此在您的模型中,它的计算结果为:

DELETE * FROM `posting` WHERE id='id';

根据您的前端,您需要修改代码,以便它发送您要删除的帖子的 ID。我假设您通过 POST 发送信息,所以您可以这样做,如果您通过 GET 发送信息,您只需将 $this->input->post 更改为 $this->input->get

Class Post extends CI_Controller{
  function delete()
  {
     $id_post = $this->input->post('your_post_name') //your_post_name is the name of the field sent in the form or whatever you're using to delete the post
     $this->load->model('Post_Model');
     $this->Post_Model->delete_post($id_post);

     redirect('Post/index/', 'refresh');
  }
}

希望能帮助到你。

//编辑看到您尝试从标签中删除,您可以执行以下操作

Class Post extends CI_Controller{
      function delete($id_post)
      {
         $this->load->model('Post_Model');
         $this->Post_Model->delete_post($id_post);

         redirect('Post/index/', 'refresh');
      }
    }

在您看来,在锚标记 url 中发送帖子的 id

<?php foreach ($posts->result_array() as $mypost) : ?> 
    <tr> 
        <td width="62">Title</td> 
        <td width="15" align="center">:</td> 
        <td width="380"><?php echo $mypost['title']; ?></td> 
    </tr> 
    <tr> 
        <td width="62">Deskripsi</td> 
        <td width="15" align="center">:</td> 
        <td width="380"><?php echo $mypost['post']; ?></td> 
        <!-- Here you're sending the id in the database of the post you want to delete directly to your controller, once again Im assuming
            you're obtaining the ID along with the title and the post -->
        <td width="62" align="center"><a href="<?php echo base_url(); ?>post/delete/<?php echo $mypost['id'];?>">Delete</a></td>
    </tr> 
<?php endforeach; ?>
于 2013-10-24T20:18:53.303 回答
1
Class Post_Model extends CI_Model{
  function index(){
     //Here is my homepage code
  }

  function delete_post($id)
  {
     $this->db->where('id', $id);
     $this->db->delete('posting');
  }
}

在 delete_post() 函数中传递 post 变量作为参数

Controller

Class Post extends CI_Controller{
  function delete()
  {
     $this->load->model('Post_Model');
     $this->Post_Model->delete_post($id);

     redirect('Post/index/', 'refresh');
  }
}
于 2013-10-25T10:39:43.763 回答
0

首先检查您的发件人您是否提交发件人?如果您不使用 json,则输入类型应为提交(按钮)

并且表单动作应该指向控制器和函数

你必须收到你要删除的变量

$delete_id=$this->input->post('id');

然后使用内部删除功能

$this->load->model('Post_Model');

$this->Post_Model->delete_post("id");

“发布”应该是表名这应该是工作

于 2013-10-24T20:31:44.870 回答