如何使用 Codeigniter 从同一表单插入和更新数据

问题描述 投票:0回答:1

任何人都可以帮助我编写控制器、模型和视图,其中会有一个带有隐藏 ID 的单一表单(视图),控制器检查来自视图的请求是否有 id,并根据它插入和更新一样。

php codeigniter crud
1个回答
1
投票

基本上你只需要检查隐藏的ID是否存在于你的数据库中。如果没有那么你

insert
,如果有你
update
。一般来说,你是这样做的:

<?php

class some_controller extends CI_Controller {

    /**
     * Submits the form
     * 
     * @return boolean
     */
    public function submit_form() {
        $id = $this->input->post('id');
        $data = array(
            'somedata' => $this->input->post('somedata'),
            'someotherdata' => $this->input->post('someotherdata')
        );
        $this->load->model('some_model');
        if (!is_null($id) && $this->some_model->id_exists($id)) {
            return $this->db->update('sometable', array('id' => $id), $data);
        } else {
            // assumes sometable autoincrements id
            // otherwise $data = array_merge(array('id' => $id), $data);
            return $this->db->insert('sometable', $data);
        }
    }

}

class some_model extends CI_Model {

    /**
     * Checks if id exists in sometable
     * 
     * @return boolean TRUE if item with $id exists in sometable
     */
    public function id_exists($id) {
        $this->db->where('id', $id);
        return $this->db->count_all_results('sometable') > 0;
    }

}

请注意:良好的实践需要将插入和更新(实际上是所有查询)移动到模型中。这只是一个例子。

© www.soinside.com 2019 - 2024. All rights reserved.