CRUD Codeigniter 3


Banyak yang mengatakan CRUD (Create Read Update Delete) adalah inti dari membuat aplikasi sistem informasi. Karena pada proses sistem informasi tidak terlepas dari CRUD. Kita tau Codeigniter adalah framework PHP yang cukup populer yang memiliki kecepatan yang cukup baik.

Saya mencoba menjelaskan konsep kode di tutorial kali ini. Nantinya saya akan bagikan codenya diakhir tulisan saya.

Satu yang perlu diingat adalah setiap orang bebas menuliskan sebuah kode dengan gaya dan ciri khasnya. Disini saya berusaha mencari gaya penulisan kode yang baik yang pernah dibuat orang.

Saya anggap anda sudah punya projek codeigniter.


1. Membuat database dan tabel



Pada contoh ini database nya bernama sisfo dan tabel yang kita gunakan untuk CRUD adalah tabel prodi.

2.  Setting database.php

3. Setting config.php


4. Setting autoload.php


Baik, untuk membuat CRUD kita akan berinteraksi dengan Model, View, Controler dan biasanya juga library.

1. Model

Model tugasnya untuk merepresentasikan struktrur data. Kurang lebih model adalah bagian yang mengurusi database. Satu menu biasanya ditangani oleh satu model.

<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Prodi_model extends CI_Model
{

    public $table = 'tbl_prodi';
    public $id = 'id_prodi';
    public $order = 'DESC';

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

    // get all
    function get_all()
    {
        $this->db->order_by($this->id, $this->order);
        return $this->db->get($this->table)->result();
    }
    function count_data($cari)
    {
        if (!empty($cari)) {
        $this->db->like('id_prodi', $cari);
        $this->db->or_like('nama_prodi', $cari);  
        }
        $query=$this->db->get($this->table);
        return $query->num_rows();
    }

    function get_prodi_list($limit, $start,$cari){
        $this->db->like('id_prodi', $cari);
        $this->db->or_like('nama_prodi', $cari);
        $this->db->order_by($this->id, $this->order);
        $query = $this->db->get($this->table, $limit, $start);
        return $query;
    }
    // get data by id
    function get_by_id($id)
    {
        $this->db->where($this->id, $id);
        return $this->db->get($this->table)->row();
    }
    
    // get total rows
    function total_rows($q = NULL) {
        $this->db->like('id', $q);
$this->db->or_like('name', $q);
$this->db->or_like('link', $q);
$this->db->or_like('icon', $q);
$this->db->or_like('is_active', $q);
$this->db->or_like('is_parent', $q);
$this->db->from($this->table);
        return $this->db->count_all_results();
    }

    // get data with limit and search
    function get_limit_data($limit, $start = 0, $q = NULL) {
        $this->db->order_by($this->id, $this->order);
        $this->db->like('id', $q);
$this->db->or_like('name', $q);
$this->db->or_like('link', $q);
$this->db->or_like('icon', $q);
$this->db->or_like('is_active', $q);
$this->db->or_like('is_parent', $q);
$this->db->limit($limit, $start);
        return $this->db->get($this->table)->result();
    }

    // insert data
    function insert($data)
    {
        $this->db->insert($this->table, $data);
    }

    // update data
    function update($id, $data)
    {
        $this->db->where($this->id, $id);
        $this->db->update($this->table, $data);
    }

    // delete data
    function delete($id)
    {
        $this->db->where($this->id, $id);
        $this->db->delete($this->table);
    }

}

/* End of file Menu_model.php */
/* Location: ./application/models/Menu_model.php */
/* Please DO NOT modify this information : */
/* Generated by Harviacode Codeigniter CRUD Generator 2016-01-01 09:22:19 */
/* http://harviacode.com */

Model adalah sebuah kelas turunan dari CI_Model. Pada class model diatas bisa dilihat tiga properti $tabel, $id dan $order. Di dalam model ini banyak terdapat fungsi yang berkaitan dengan model database, misalnya fungsi untuk mengambil semua data, mengambil data berdasarkan id, insert, update dan delete. Untuk model database lainya juga bisa dibuat di sini.

library database diload pada file auto load dan objek yang dihasilkannya bernama db. Banyak sekali fungsi di objek db ini yang akan saya terangkan dilain kesempatan.

2. View

View adalah tampilah hasil yang diolah controller yang bisa di lihat user. Untuk konsep bagaimana view ini di proses anda bisa baca disini.  Karena saya rasa urusan view sudah dibahas pada bagian cara menggunakan template.

3. Controller

Bisa dikatakan controller ini adalah otak dari semuanya. Karena di controller ini masukkan dari user diterima dan diracik kemudian disajikan.

<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Prodi extends CI_Controller
{
    
        
    function __construct()
    {
        parent::__construct();
        is_login();
        $this->load->model('Prodi_model');
        $this->load->library('form_validation');
        $this->load->library('Pagination');
        $this->load->library('Pagination_bs');
    }

    public function index()
        {
            //$mhs = $this->Mhs_model->get_all();
            if ($this->input->POST('s_cari',TRUE)) {
                $this->session->set_flashdata('pag', $this->input->POST('cari',TRUE));
            }elseif($this->input->POST('reset')){
                $this->session->set_flashdata('pag', '');
            }

            $jlh_data=$this->Prodi_model->count_data($this->session->flashdata('pag'));
            $config=$this->pagination_bs->load('prodi/index',$jlh_data);
            $this->pagination->initialize($config);
            $page= ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
            
            
            //panggil function get_mahasiswa_list yang ada pada mmodel mahasiswa_model. 
            $prodi_data = $this->Prodi_model->get_prodi_list($config["per_page"], $page,$this->session->flashdata('pag'));  
                                                                                // sesion untuk cari
            $this->session->set_flashdata('pag', $this->session->flashdata('pag'));
            //echo $this->input->post('cari',TRUE);;         
            //echo $this->session->flashdata('pag');
            $pagination = $this->pagination->create_links();
            $data = array(
                'page' => $page,
                'prodi_data' => $prodi_data,
                'pagination' => $pagination,
                'jlh_data' => $jlh_data,
            );

            $this->template->load('template_tabel','menu','prodi/prodi_list', $data);
            //$this->load->view('menu','',FALSE);//true false untuk tidak langsung tampil
        }
    
    public function read($id) 
        {
            $row = $this->Prodi_model->get_by_id($id);
            if ($row) {
                $data = array(
            'judul' => 'Detail Prodi',
     'id_prodi' => $row->id_prodi,
     'nama_prodi' => $row->nama_prodi,
     'no_telp' => $row->no_telp,
     'alamat' => $row->alamat,
         );
                $this->template->load('template_tabel','menu','prodi/prodi_read', $data);
            } else {
                $this->session->set_flashdata('message', 'Record Not Found');
                redirect(site_url('prodi'));
            }
        }

    public function create() 
        {
            $data = array(
                'judul' => 'Form Tambah Prodi',
                'button' => 'Simpan',
                'action' => site_url('prodi/create_action'),
         'id_prodi' => set_value('id_prodi'),
         'nama_prodi' => set_value('nama_prodi'),
         'no_telp' => set_value('no_telp'),
         'alamat' => set_value('alamat'),
        );
            $this->template->load('template_form','menu','prodi/prodi_form', $data);
        }
    
    public function create_action() 
        {
            $this->_rules();

            if ($this->form_validation->run() == FALSE) {
                $this->create();
            } else {
                $foto=$this->upload_foto_mhs();
                $data = array(
     'id_prodi' => $this->input->post('id_prodi',TRUE),
     'nama_prodi' => $this->input->post('nama_prodi',TRUE),
     'no_telp' => $this->input->post('no_telp',TRUE),
     'alamat' => $this->input->post('alamat',TRUE),
         );

                $this->Prodi_model->insert($data);

                $this->session->set_flashdata('message', 'Prodi '.$this->input->post('nama_prodi',TRUE).'berhasil ditambah');
                redirect(site_url('prodi/create'));
                
            }
        }
        
    public function update($id) 
        {
            $row = $this->Prodi_model->get_by_id($id);
            //echo $row['nim'];
            if ($row) {
                $data = array(
                    'judul' => 'Form Edit Prodi',
                    'button' => 'Ubah',
                    'action' => site_url('prodi/update_action'),
     'id_prodi' => set_value('id_prodi',$row->id_prodi),
            'nama_prodi' => set_value('nama_prodi',$row->nama_prodi),
            'no_telp' => set_value('no_telp',$row->no_telp),
            'alamat' => set_value('alamat',$row->alamat),
            );
                $this->template->load('template_form','menu','prodi/prodi_form', $data);
            }else {
                $this->session->set_flashdata('message', 'Record Not Found');
                redirect(site_url('prodi'));
            }
        }
    
    public function update_action() 
        {
            $this->_rules_update();

            if ($this->form_validation->run() == FALSE) {
                $this->update($this->input->post('id_prodi', TRUE));
            } 
            else 
            {
            
                $data = array(
                'id_prodi' => $this->input->post('id_prodi',TRUE),
                'nama_prodi' => $this->input->post('nama_prodi',TRUE),
                'no_telp' => $this->input->post('no_telp',TRUE),
                'alamat' => $this->input->post('alamat',TRUE),
                );
                $this->Prodi_model->update($this->input->post('id_prodi', TRUE), $data);
                $this->session->set_flashdata('message', 'Update Record Success');
                redirect(site_url('prodi/update/'.$this->input->post('id_prodi',TRUE)));
            }
        }
    
    public function delete($id) 
        {
            $row = $this->Prodi_model->get_by_id($id);

            if ($row) {
                $this->Prodi_model->delete($id);
                $this->session->set_flashdata('message', 'Delete Record Success');
                redirect(site_url('prodi'));
            } else {
                $this->session->set_flashdata('message', 'Record Not Found');
                redirect(site_url('prodi'));
            }
        }

    public function _rules() 
        {
     $this->form_validation->set_rules('id_prodi', 'id_prodi', 'trim|required|is_unique[tbl_prodi.id_prodi]');
     $this->form_validation->set_rules('nama_prodi', 'Nama prodi', 'trim|required');
     $this->form_validation->set_rules('no_telp', 'Nomor telepon', 'trim|required');
     $this->form_validation->set_rules('alamat', 'Alamat', 'trim|required');
     $this->form_validation->set_error_delimiters('<span class="text-danger">', '</span>');
        }
    public function _rules_update() 
        {
        $this->form_validation->set_rules('id_prodi', 'id_prodi', 'trim|required');
        $this->form_validation->set_rules('nama_prodi', 'Nama prodi', 'trim|required');
        $this->form_validation->set_rules('no_telp', 'Nomor telepon', 'trim|required');
        $this->form_validation->set_rules('alamat', 'Alamat', 'trim|required');
        $this->form_validation->set_error_delimiters('<span class="text-danger">', '</span>');
        }

    public function excel()
        {
            $this->load->helper('exportexcel');
            $namaFile = "Data Mahasiswa.xls";
            $judul = "Data Mahasiswa";
            $tablehead = 0;
            $tablebody = 1;
            $nourut = 1;
            //penulisan header
            header("Pragma: public");
            header("Expires: 0");
            header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
            header("Content-Type: application/force-download");
            header("Content-Type: application/octet-stream");
            header("Content-Type: application/download");
            header("Content-Disposition: attachment;filename=" . $namaFile . "");
            header("Content-Transfer-Encoding: binary ");

            xlsBOF();

            $kolomhead = 0;
            xlsWriteLabel($tablehead, $kolomhead++, "No");
     xlsWriteLabel($tablehead, $kolomhead++, "Nim");
     xlsWriteLabel($tablehead, $kolomhead++, "Nama");
     xlsWriteLabel($tablehead, $kolomhead++, "Gender");
     xlsWriteLabel($tablehead, $kolomhead++, "Tempat Lahir");
     xlsWriteLabel($tablehead, $kolomhead++, "Tanggal Lahir");

     foreach ($this->Mhs_model->get_all() as $data) {
                $kolombody = 0;

                //ubah xlsWriteLabel menjadi xlsWriteNumber untuk kolom numeric
                xlsWriteNumber($tablebody, $kolombody++, $nourut);
         xlsWriteLabel($tablebody, $kolombody++, $data->nim);
         xlsWriteLabel($tablebody, $kolombody++, $data->nama);
         xlsWriteLabel($tablebody, $kolombody++, $data->gender);
         xlsWriteNumber($tablebody, $kolombody++, $data->tempat_lahir);
         xlsWriteNumber($tablebody, $kolombody++, $data->tanggal_lahir);

         $tablebody++;
                $nourut++;
            }

            xlsEOF();
            exit();
        }

    public function word()
        {
            header("Content-type: application/vnd.ms-word");
            header("Content-Disposition: attachment;Filename=menu.doc");

            $data = array(
                'menu_data' => $this->Mhs_model->get_all(),
                'start' => 0
            );
            
            $this->load->view('menu_doc',$data);
        }

    function pdf()
        {
            $data = array(
                'menu_data' => $this->Menu_model->get_all(),
                'start' => 0
            );
            
            ini_set('memory_limit', '32M');
            $html = $this->load->view('menu_pdf', $data, true);
            $this->load->library('pdf');
            $pdf = $this->pdf->load();
            $pdf->WriteHTML($html);
            $pdf->Output('menu.pdf', 'D'); 
        }

}

/* End of file Menu.php */
/* Location: ./application/controllers/Menu.php */
/* Please DO NOT modify this information : */
/* Generated by Harviacode Codeigniter CRUD Generator 2016-01-01 09:22:19 */
/* http://harviacode.com */

Controller ini bekerja jika dipanggil dengan link base_url/prodi, contohnya localhost/sisfo/prodi. Jika controller prodi yang dipanggil, otomatis fungsi yang dijalankan adalah fungsi index. Perhatikan saat controller ini memanggil fungsi pada model dan menampung nilai baliknya. Kemudian data dari database di kirim ke view menggunakan variabel array.

Terimakasi telah membaca, kirimkan pertanyaan anda dikolom komentar.

Download
Password rar :belajarwebmedan.blogspot.com
username login : admin@admin.com
password login : password

Popular posts from this blog

Cara Menggunakan Template Admin LTE Sebagai Template Web Dinamis

Aplikasi CRUD menggunakan Template Admin LTE

Cara membuat Link ke Halaman lain dan Link ke bagian Halaman