在Codeigniter中保存更新信息的问题

时间:2014-04-06 17:04:36

标签: php sql arrays codeigniter add

我的目标是更新job_contract。 这应该有两种方式。 1.通过客户的页面和2.通过提供商的页面。

我目前的工作模式是:

 public function update_job_contract($post_obj)
{
    $id = $post_obj['id'];
    $data = array 
    (
        'client_feedback' => $post_obj['client_feedback'],
        'client_notetoself' => $post_obj['client_notetoself'],
        'contract_status' => $post_obj['contract_status'],
        'client_id' => $this->auth_model->get_user_id()
    );

    $this->db->insert('job', $data);
}

public function provider_update_job_contract($post_obj)
{
    $id = $post_obj['id'];
    $data = array 
    (
        'provider_feedback' => $post_obj['provider_feedback'],
        'provider_notetoself' => $post_obj['provider_notetoself'],
        'provider_id' => $this->auth_model->get_user_id()
    );

    $this->db->insert('job', $data);
}

我的客户端控制器页面中有以下几行:

public function update_job_contract() 
{
    $this->validateRole('client');
    $this->load->model('job_model');

    $id = $this->uri->segment(3,0);


    $data['job'] = $this->job_model->get_job($id);  

    $this->load->view('client/update_job_contract', $data);
}   

public function update_job_contract_submit() 
{
    $this->validateRole('client');
    $this->load->model('job_model');

    if ( '0' == $_POST['id'] ) {
    $this->job_model->update_job_contract($_POST);
    //} 
    redirect('client/manage_job_contracts?message=Congratulations!');
}

这在我的提供者控制器页面中:

 public function provider_update_job_contract() 
{
    $this->validateRole('provider');
    $this->load->model('job_model');

    $id = $this->uri->segment(3,0);


    $data['job'] = $this->job_model->get_job($id);  

    $this->load->view('provider/provider_update_job_contract', $data);
}   

public function provider_update_job_contract_submit() 
{
    $this->validateRole('provider');
    $this->load->model('job_model');

    if ( '0' == $_POST['id'] ) {
    $this->job_model->provider_update_job_contract($_POST);
    } 
    redirect('provider/job_contracts?message=Congratulations!');
}

问题是,他们并没有真正更新这些条目。请帮忙..

1 个答案:

答案 0 :(得分:0)

您正在使用$this->db->insert(),但使用Active Record更新您应该使用的行$this->db->update()

$data = array(
   'title' => $title,
   'name' => $name,
   'date' => $date
);

$this->db->where('id', $id);
$this->db->update('mytable', $data);

您的功能应该如下所示:

public function update_job_contract($post_obj)
{
    $id = $post_obj['id'];
    $data = array 
    (
        'client_feedback' => $post_obj['client_feedback'],
        'client_notetoself' => $post_obj['client_notetoself'],
        'contract_status' => $post_obj['contract_status'],
        'client_id' => $this->auth_model->get_user_id()
    );
    $this->db->where('id', $id);
    $this->db->update('job', $data);
}

public function provider_update_job_contract($post_obj)
{
    $id = $post_obj['id'];
    $data = array 
    (
        'provider_feedback' => $post_obj['provider_feedback'],
        'provider_notetoself' => $post_obj['provider_notetoself'],
        'provider_id' => $this->auth_model->get_user_id()
    );
    $this->db->where('id', $id);
    $this->db->update('job', $data);
}

此外,在控制器内部__POST应替换为$ this-> input-> post()

以此为例:

public function provider_update_job_contract_submit() 
{
    $this->validateRole('provider');
    $this->load->model('job_model');

    $post = $this->input->post();
    if ( '0' == $post['id'] )
    {
        $this->job_model->provider_update_job_contract($post);
    } 
    redirect('provider/job_contracts?message=Congratulations!');
}

确保以相同方式更新其他控制器