如何在CodeIgniter中更新数据?

时间:2015-02-20 03:43:41

标签: php mysql codeigniter

首先,抱歉我的英语不好,如果你不明白我在说什么,你可以要求它,我会寻找另一个合适而准确的词。

现在,我在过去的两周里一直在使用codeigniter,所以我对此提出了很多疑问,但我发现其中有一个是我的想法。

我从简单的CRUD开始,然后使它先进,到目前为止一直很好,直到我在更新数据时卡住了。当我点击“提交”按钮时,我只得到404页面。当我看到数据库时,没有任何变化。

这是控制器的代码:

<?php if(!defined('BASEPATH')) exit('No direct script access allowed');
Class Master_user extends CI_Controller {   
function __construct(){  
    parent::__construct();  
    $this->load->model('mod_master_user');
    $this->load->library('datatables');
}
public function index(){
    if ($this->session->userdata('type') == 'admin') {
        $data['hasil'] = $this->mod_master_user->getall();
        $datum['content'] = $this->load>view('master_user/view',$data,true);
        $this->load->view('main',$datum);
    } else if ($this->session->userdata('type') == 'user'){
        $a= $this->load->model('m_absensi');
        $aa["content"] = $this->load->view('absensi/form',$a,true);
        $this->load->view("absensi/mainUser",$aa);
    }
}

public function tambah_data(){
    if($this->input->post('nama')){
        $this->mod_master_user->tambah();
        redirect('master_user');
    }else{
    $this->load->view('master_user/add'); 
    }
}

public function update_data($id_user)**//i use this method for updating data**{
    if($this->input->post('submit')){
        $this->mod_master_user->update($id_user);
        redirect('master_user/index');
    }
    $data['hasil']=$this->mod_master_user->getById($id_user);
    $this->load->view('master_user/edit',$data);
}

public function delete_data($id_user){
    $this->mod_master_user->delete($id_user);
    redirect('master_user');
}

public function error() 
{ 
    $this->output->set_status_header('404'); 
    $data['content'] = '404';  
    $this->load->view('master_user/404',$data); 
}

public function print_report()
{
    $this->load->view('master_user/print');
}

public function jam_masuk()
{
    $this->load->view('master_user/jam_masuk');
}

}

这是模型的代码:

<?php if(!defined('BASEPATH')) exit('No direct script access allowed');
Class Mod_master_user extends CI_Model{ 

var $tabel_name = 'master_user';

function __construct() {
    parent::__construct();
}

public function getall(){
    $ambil_data = $this->db->get('master_user');//mengambil tabel master_user

    if ($ambil_data->num_rows() > 0 ){ //jika data lebih dari 0
        foreach ($ambil_data->result() as $data){
            $hasil[] = $data;
        }
        return $hasil;
    }
}

public function tambah(){
    $id_user = $this->input->post('id_user');       
    $nama  = $this->input->post('nama');    
    $password = $this->input->post('password');
    $tanggal_lahir = $this->input->post('tanggal_lahir');
    $tempat_lahir = $this->input->post('tempat_lahir');
    $role = $this->input->post('role');
    $data = array (
        'id_user'=> $id_user,       
        'nama'=>$nama,  
        'password'=>md5($password),
        'tanggal_lahir'=>date('Y-m-d',strtotime($tanggal_lahir)),
        'tempat_lahir'=>$tempat_lahir,
        'role'=>$role   
    );  
    $this->db->where('id_user',$id_user);
    $this->db->insert('master_user', $data);
}

public function update($id_user)**//i use this method to updating data**{   
    $id_user=$this->input->post('id_user');      
    $nama=$this->input->post('nama');    
    $password=$this->input->post('password');
    $tanggal_lahir=$this->input->post('tanggal_lahir');
    $tempat_lahir=$this->input->post('tempat_lahir');
    $role=$this->input->post('role');
      $data = array (
        'id_user' => $id_user,      
        'nama'  => $nama,   
        'password'=> $password,
        'tanggal_lahir'=> $tanggal_lahir,
        'tempat_lahir'=> $tempat_lahir,
        'role'=>$role
    );
    $this->db->where('id_user',$id_user);
    $this->db->update('master_user',$data); //update data 
}

public function getById($id_user){  //mengambil data dari db berdasarkan   id (primary key)
    return $this->db->get_where('master_user',array('id_user'=>$id_user))->row();
}

public function delete($id_user){   
    $this->db->where('id_user',$id_user);
    $this->db->delete('master_user'); //query delete data 
}

public function cek_user_login($username, $password) {
    $this->db->select('*');
    $this->db->where('NAMA', $username);
    $this->db->where('PASSWORD', md5($password));

    $query = $this->db->get($this->tabel_name, 1);



    if ($query->num_rows() == 1) {
        $this->db->limit(1);
        return $query->row_array();
    }
}

public function validasi()
{
    $nama = $this->input->post('nama');
    $password = $this->input->post('password');
    $check = $this->mod_master_user->check($nama, md5($password));
    if($check->num_rows() > 0)
    {
        //login berhasil, buat session
        //$this->session->set_userdata('username',$username);
        redirect('master_user');
    }
    else
    {
        //login gagal
        //$this->session->set_flashdata('message','Username atau password salah');
        redirect('users');
    }
}

}

到目前为止,我在其他论坛上没有得到答案,所以我在这里要求答案:) 任何答案/帮助将不胜感激。谢谢:))

3 个答案:

答案 0 :(得分:0)

我使用CodeIgniter已经有一段时间了。

你在加载输入类吗?所以你实际上可以收到$ _GET和$ _POST数据?我认为它实际上是默认实现的。

这可能有点过于简单了,但你是否正在调用正确的URI并确定它能够达到你的观点?

可能有助于查看您的视图,您是否正在使用表单助手? https://ellislab.com/codeIgniter/user-guide/helpers/form_helper.html

答案 1 :(得分:0)

如果您获得404,则问题出在操作标记中。这意味着它不会发布到正确的URL。

答案 2 :(得分:0)

由于路线不好,这很有可能(如果不是肯定的话)。

在config / routes.php中,您需要一条路线,例如:$route['master_user/update/(:any)'] = 'master_user/update_data/$1;

在您的视图中,您需要一个表单,其中操作指向该路线,例如:

<form action="master_user/update_data/1"> <!-- your fields and submit button --> </form>

其中数字1(在动作网址中)是要更新的寄存器的ID。