2015-12-14 55 views
-2

因此我嘗試製作一個簡單的粗糙應用程序。當我嘗試刪除時它運行良好,否則在添加和更新數據時它總是出錯。我的腳本沒有成功添加或更新數據到數據庫。我在這裏使用(ASK)使用codeIgniter向數據庫mysqli添加和更新數據失敗

下面的代碼點火器PHP框架是我的控制器和模型的腳本爲您引用

<?php 
    //script of controller 
    class Siswa extends CI_Controller 
    { 
     private $limit=10; 

     function __construct() 
     { 
     parent::__construct(); 
     $this->load->library(array('table','form_validation')); 
     $this->load->helper(array('form','url')); 
     $this->load->model('siswa_model','',TRUE); 
     } 

     function index($offset=0,$order_column='id',$order_type='asc') 
     { 
     if(empty($offset)) 
      $offset=0; 

     if(empty($order_column)) 
      $order_column='id'; 

     if(empty($order_type)) 
      $order_type='asc'; 

     $siswas=$this->siswa_model->get_paged_list($this->limit,$offset,$order_column,$order_type)->result(); 

     $this->load->library('pagination'); 
     $config['base_url'] = site_url('siswa/index'); 
     $config['total_rows'] = $this->siswa_model->count_all(); 
     $config['per_page']=$this->limit; 
     $config['url_segment']=3; 
     $this->pagination->initialize($config); 
     $data['pagination']=$this->pagination->create_links(); 

     $this->load->library('table'); 
     $this->table->set_empty("&nbsp;"); 
     $new_order=($order_type=='asc'?'desc':'asc'); 
     $this->table->set_heading 
     (
      'No', 
      anchor('siswa/index/'.$offset.'/nama'.$new_order,'Nama'), 
      anchor('siswa/index/'.$offset.'/alamat'.$new_order,'Alamat'), 
      anchor('siswa/index'.$offset.'/jenis_kelamin'.$new_order,'Jenis Kelamin'), 
      anchor('siswa/index'.$offset.'/tanggal_lahir'.$new_order,'Tanggal Lahir (dd-mm-yyyy)'), 
      'Actions' 
     ); 
     $i=0+$offset; 
     foreach ($siswas as $siswa) 
     { 
      $this->table->add_row(++$i, 
       $siswa->nama, 
       $siswa->alamat, 
       strtoupper($siswa->jenis_kelamin)=='M'? 
       'Laki-laki':'Perempuan', 
       date('d-m-Y',strtotime(
        $siswa->tanggal_lahir)), 
       anchor('siswa/view/'.$siswa->id, 
        'view',array('class'=>'view')).' '. 
       anchor('siswa/update/'.$siswa->id, 
        'update',array('class'=>'update')).' '. 
       anchor('siswa/delete/'.$siswa->id, 
        'delete',array('class'=>'delete', 
         'onclick'=>"return confirm 
         ('Apakah Anda yakin ingin menghapus data siswa?')")) 
       ); 
     } 

     $data['table']=$this->table->generate(); 

     if($this->uri->segment(3)=='delete_success') 
      $data['message']='Data berhasil dihapus'; 

     else if ($this->uri->segment(3)=='add_succsess') 
      $data['message']='Data berhasil ditambah'; 

     else 
      $data['message']=''; 

     $this->load->view('siswaList',$data); 
    } 

    function add() 
    { 
     $data['title']='Tambah siswa baru'; 
     $data['action']= site_url('siswa/add'); 
     $data['link_back'] = anchor('siswa/index/','Back to list of siswas',array('class'=>'back')); 

     $this->_set_rules(); 
     if($this->form_validation->run() === FALSE) 
     { 
      $data['message']=''; 
      $data['title']='Add new siswa'; 
      $data['message'] = ''; 
      $data['siswa']['id']=''; 
      $data['siswa']['nama']=''; 
      $data['siswa']['alamat']=''; 
      $data['siswa']['jenis_kelamin']=''; 
      $data['siswa']['tanggal_lahir']=''; 
      $data['link_back'] = anchor('siswa/index','Lihat Daftar Siswa',array('class'=>'back')); 

      $this->load->view('siswaEdit',$data); 
     } 

     else 
     { 
      $siswa = array('nama'=>$this->input->post('nama'), 
       'alamat'=>$this->input->post('alamat'), 
       'jenis_kelamin'=>$this->input->post('jenis_kelamin'), 
       'tanggal_lahir'=>date('Y-m-d',strtotime($this->input->post('tanggal_lahir')))); 

      $this->validation->id = $id; 
      $data['siswa']=$this->siswa_model->add($id,$siswa); 
      redirect('siswa/index/add_success'); 
     } 

    } 

    function view($id) 
    { 
     $data['title']='siswa Details'; 
     $data['link_back']= anchor('siswa/index/','Lihat daftar siswas',array('class'=>'back')); 

     $data['siswa']=$this->siswa_model->get_by_id($id)->row(); 

     $this->load->view('siswaView',$data); 
    } 

    function update($id) 
    { 
     $data['title']='Update siswa'; 
     $this->load->library('form_validation'); 
     $this->_set_rules(); 
     $data['action']=('siswa/update/'.$id); 

     if($this->form_validation->run()===FALSE) 
     { 
      $data['message']=''; 
      $data['siswa']=$this->siswa_model->get_by_id($id)->row_array(); 
      $_POST['jenis_kelamin'] = strtoupper($data['siswa']['jenis_kelamin']); 
      $data['siswa']['tanggal_lahir']=date('d-m-Y',strtotime($data['siswa']['tanggal_lahir'])); 

      $data['title']='Update siswa'; 
      $data['message']='';  
     } 

     else 
     { 
      $id=$this->input->post('id'); 
      $siswa=array('nama'=>$this->input->post('nama'), 
       'alamat'=>$this->input->post('alamat'), 
       'jenis_kelamin'=>$this->input->post('jenis_kelamin'), 
       'tanggal_lahir'=> date('Y-m-d',strtotime($this->input->post('tanggal_lahir')))); 

      $this->siswa_model->update($id,$siswa); 

      $data['message']='update siswa success'; 
     } 

     $data['link_back']= anchor('siswa/index/','Lihat daftar siswas',array('class'=>'back')); 

     $this->load->view('siswaEdit',$data); 
    } 

    function delete($id) 
    { 
     $this->siswa_model->delete($id); 
     redirect('siswa/index/delete_success','refresh'); 

    }  

    function _set_rules() 
    { 
     $this->form_validation->set_rules('nama','Nama','required|trim'); 
     $this->form_validation->set_rules('jenis_kelamin','Jenis Kelamin','required'); 
     $this->form_validation->set_rules('alamat','Alamat','required'); 
     $this->form_validation->set_rules('tanggal_lahir','Tanggal Lahir','required|callback_valid_date'); 
    } 

    function valid_date($str) 
    { 
     if(!preg_match('/^[0-9]{2}-[0-9]{2}-[0-9]{4}$/',$str)) 
     { 
      $this->form_validation->set_message('valid_date','date format is not valid. dd-mm-yyyy'); 
      return false; 
     } 

     else 
     { 
      return true; 
     } 
    } 

} 

?> 

<?php 
//script of model 
class Siswa_model extends CI_Model 
{ 
    private $primary_key='id'; 
    private $table_name='siswa'; 

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

    function get_paged_list($limit=10,$offset=0,$order_column='',$order_type='asc') 
    { 
     if(empty($order_column) || empty ($order_type)) 
     { 
      $this->db->order_by($this->primary_key,'asc'); 
     } 

     else 
     { 
      $this->db->order_by($order_column,$order_type); 
     } 

     return $this->db->get($this->table_name,$limit,$offset); 
    } 

    function count_all() 
    { 
     return $this->db->count_all($this->table_name); 
    } 

    function get_by_id($id) 
    { 
     $this->db->where($this->primary_key,$id); 
     return $this->db->get($this->table_name); 
    } 

    function save($person) 
    { 
     $this->db->insert($this->table_name,$person); 
     return $this->db->insert_id(); 
    } 

    function update($id,$person) 
    { 
     $this->db->where($this->primary_key,$id); 
     $this->db->update($this->table_name,$person); 
    } 

    function delete($id) 
    { 
     $this->db->where($this->primary_key,$id); 
     $this->db->delete($this->table_name); 
    } 
} 
?> 

回答

1
function add() { 
........... 
$siswa = array('nama'=>$this->input->post('nama'), 
      'alamat'=>$this->input->post('alamat'), 
      'jenis_kelamin'=>$this->input->post('jenis_kelamin'), 
      'tanggal_lahir'=>date('Y-m-d',strtotime($this->input->post('tanggal_lahir')))); 

     $this->validation->id = $id; 
     $data['siswa']=$this->siswa_model->add($id,$siswa); 
     redirect('siswa/index/add_success'); 

的$ id不被任何聲明。

你調用$這個 - > siswa_model->添加($ ID,$ siswa),但功能的add()不存在siswa_model(這就是所謂的保存())

+0

我做到了。現在感謝你的加入過程。但它仍然沒有更新 –

+0

Siswa_model:更新($ id,$ person) 你可以var_dump($ person),所以我們知道肯定有一些數據提交? 也做$ this-> db-> last_query();在運行db-> update()之後,我們可以檢查生成的查詢。 –