Faber Nainggolan Blog's

Artikel, Tutorial Pemrograman, Tutorial database, PHP dan Framework

LightBlog

Salam koding, kembali lagi bersama saya di artikel mengenai codeigniter jika kita membahas membangun sebuah project berarti kita tidak lepas...

Memulai Project CodeIgniter : Part 6 CRUD

Salam koding, kembali lagi bersama saya di artikel mengenai codeigniter jika kita membahas membangun sebuah project berarti kita tidak lepas harus membuat yang nama pengelolaan data yaitu Create, Read ,Update dan Delete (CRUD) nah pada artikel kali ini kita akan bahas CRUD. Mari kita mulai


Persiapan

Untuk package codeigniter kita buat dari artikel-artikel sebelumnya kalo belum baca bisa dibaca dibawah ini :

Memulai Project CodeIgniter
Memulai Project CodeIgniter : Part 2
Memulai Project CodeIgniter : Part 3 Menghilangkan Index.php
Memulai Project CodeIgniter : Part 4 User Agent
Memulai Project CodeIgniter : Part 5 Template


Nah ambil artikel Memulai project CodeIgniter : Part 5 Tamplate, core packagenya dan script yang kita kerjakan sudah saya sisipkan dan bisa didownload pada link tersebut. Setelah didownload silakan di ekstrak lalu beri nama folder nya ./ci-crud (atau terserah kawan mau dibuat nama foldernya) kalo saran saya sih disamakan aja agar seragam dalam menjalankan projectnya nanti nya

Konfigurasi

config.php
Edit file config.php pada folder ./application/config/ buat seperti script dibawah
$config['base_url'] = '';
atau
$config['base_url'] = 'ci-projectpertama';

ubah menjadi

$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");
$config['base_url'] .= "://".$_SERVER['HTTP_HOST'];
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);

script diatas berfungsi mengambil nama folder project kita secara otomatis, jadi kita tidak usah capek lagi mengubahnya base url nya sesuai domain jika suatu saat nanti akan upload ke project kita hostingan.

autoload.php
kemudian masi pada folder ./application/config/ buka file autoload.php 
pada bagian libarary

$autoload['libraries'] = array();
ubah menjadi
$autoload['libraries'] = array('database');

selanjutnya pada bagian helper buat seperti berikut
$autoload['helper'] = array('url','form'); 

kemudian pada bagian model buat seperti ini
$autoload['model'] = array('mbarang'); 

pada file autoload ini setiap yang kita includekan berarti ini akan otomatis di load pada class project kita nantinya

routes.php
selanjutnya masi difolder ./application/config/ buka file routes.php ubah seperti dibawah ini
$route['default_controller'] = 'welcome';
ubah menjadi
$route['default_controller'] = 'barang';
baris ini akan mengatur default controller yang akan diakses dimana pada script akan otomatis memanggil controller barang.

database.php
selanjutnya konfigurasi database, buka file database.php pada folder ./application/config/ settingan sesuaikan dengan webserver yang kawan2 punya, seperti pada settingan server saya seperti dibawah ini

$db['default'] = array(
  'dsn'      => '',
  'hostname' => 'localhost',
  'username' => 'root',
  'password' => '',
  'database' => 'db_crud',
  'dbdriver' => 'mysqli',
  'dbprefix' => '',
  'pconnect' => FALSE,
  'db_debug' => (ENVIRONMENT !== 'production'),
  'cache_on' => FALSE,
  'cachedir' => '',
  'char_set' => 'utf8',
  'dbcollat' => 'utf8_general_ci',
  'swap_pre' => '',
  'encrypt'  => FALSE,
  'compress' => FALSE,
  'stricton' => FALSE,
  'failover' => array(),
  'save_queries' => TRUE
);

Implementasi

Database
Buat database terlebih beri nama db_crud lalu copykan query dibawah ini
CREATE TABLE `tb_barang` (
  `kode_brg` int(5) NOT NULL AUTO_INCREMENT,
  `barcode` varchar(20) NOT NULL,
  `nama_brg` varchar(150) NOT NULL,
  `harga_brg` int(10) NOT NULL,
  `keterangan` tinytext NOT NULL,
  `jenis` varchar(30) DEFAULT NULL,
  `satuan` varchar(30) DEFAULT NULL,
  `stok_brg` int(5) DEFAULT NULL,
  PRIMARY KEY (`kode_brg`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1

Controller
Lalu buat sebuah controller dan beri nama Barang.php dan buat script seperti dibawah ini
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Barang extends CI_Controller {
/******************************************************
  | CRUD barang
  | controller barang view, create, update, delete
  | by gTech
  *****************************************************/
  public function __construct() {
    parent::__construct();
  }
  
    //fungsi awal ketika kita panggil controller barang
  public function index(){
      $data['judul'] = 'CRUD CodeIgniter Studi Kasus Barang'; //judul title
      $data['querybarang'] = $this->mbarang->getallbarang(); //model semua barang
      
      //template views
      $this->load->view('header',$data);
      $this->load->view('barang/vbarang',$data); //load views vbarang
      $this->load->view('footer',$data);
    }
    //fungsi form tambah ketika kita panggil pada link 
    public function tambah(){     
      $data['judul'] = 'Tambah barang';
      $data['aksi'] = 'aksi_tambah';

        //template views
      $this->load->view('header',$data);
      $this->load->view('barang/vformbarang',$data);
      $this->load->view('footer',$data);
    }
    //fungsi form edit ketika kita panggil pada link
    public function edit(){
      $id = $this->input->get('id');
      $data['row'] = $this->mbarang->getbarangbyid($id);
      $data['judul'] = 'Edit barang';
      $data['aksi']  = 'aksi_edit';

        //template views
      $this->load->view('header',$data);
      $this->load->view('barang/vformbarang',$data);
      $this->load->view('footer',$data);
    }
    //fungsi untuk menangani pemanggilan aksi tambah ketika form barang di submit
    public function aksi_tambah(){
        //deklarasikan variabel dari form
      $barcode     = addslashes($this->input->post('barcode'));
      $nama     = addslashes($this->input->post('nama'));
      $jenis     = addslashes($this->input->post('jenis'));
      $keterangan    = addslashes($this->input->post('keterangan'));
      $satuan        = addslashes($this->input->post('satuan'));
      $harga        = addslashes($this->input->post('harga'));
      $stok        = addslashes($this->input->post('stok'));

        //validasi 
        $this->form_validation->set_rules('barcode', 'Barcode Barang', 'required'); //kode
        $this->form_validation->set_rules('nama', 'Nama Barang', 'required'); //nama
        $this->form_validation->set_rules('jenis', 'Jenis Barang', 'required'); //jenis
        if ($this->form_validation->run() == TRUE) {
          $data = array(
            'barcode'   => $barcode,
            'nama_brg'  => $nama,
            'harga_brg' => $harga,
            'keterangan'=> $keterangan,
            'satuan'    => $satuan,
            'jenis'     => $jenis,
            'stok_brg'  => $stok
          );
          $this->mbarang->getinsert($data); //model insert data barang
          $this->session->set_flashdata("pesan", "Data berhasil di insert"); //pesan yang tampil setalah berhasil di insert
          redirect('barang');
        }else{
          //ini berfungsi agar field form tidak menjadi kosong, dibuat dalam array
          //variabel akan tetap dibawa jika error terjadi pada saat validasi
          $info = array(
            'abkode'=>$barcode,
            'anama'=>$nama,
            'aharga'=>$harga,
            'asatuan'=>$satuan,
            'ajenis'=>$jenis,
            'astok'=>$stok,
            'aket'=>$keterangan,
            'judul' => 'Tambah barang',
            'aksi' => 'aksi_tambah'

          );
          $err = validation_errors(); //error validasi akan dimunculkan pada pesan

          $this->session->set_flashdata("pesan", "Data Gagal di insert
".$err);

          //ketika error terjadi halaman akan tetap di form barang
          $this->load->view('header',$info); 
          $this->load->view('barang/vformbarang',$info);
          $this->load->view('footer',$info); 
        }
      }

    //fungsi untuk menangani pemanggilan aksi edit ketika form barang di submit
    public function aksi_edit(){
      //ambil variabel dari form
        $kode       = addslashes($this->input->post('kode'));
        $barcode     = addslashes($this->input->post('barcode'));
        $nama     = addslashes($this->input->post('nama'));
        $jenis     = addslashes($this->input->post('jenis'));
        $keterangan    = addslashes($this->input->post('keterangan'));
        $satuan        = addslashes($this->input->post('satuan'));
        $harga        = addslashes($this->input->post('harga'));
        $stok        = addslashes($this->input->post('stok'));

        $data = array(
          'barcode'   => $barcode,
          'nama_brg'  => $nama,
          'harga_brg' => $harga,
          'keterangan'=> $keterangan,
          'satuan'    => $satuan,
          'jenis'     => $jenis,
          'stok_brg'  => $stok
        );
        $this->mbarang->getupdate($kode,$data); //modal update data barang
        $this->session->set_flashdata("pesan", "Data berhasil diupdate"); //pesan yang tampil setelah berhasil di update
        redirect('barang'); 
    }
    //fungsi untuk menangani pemanggilan link detail barang
    public function detail(){ //dengan membawa variabel id
      $id = $this->input->get('id');
        $data['judul'] = 'Detail Barang'; //judul title
        $data['rowbarang'] = $this->mbarang->getbarangbyid($id); //query model barang sesuai id
        //template views
        $this->load->view('header',$data);
        $this->load->view('barang/vdetailbarang',$data); //meload views detail barang
        $this->load->view('footer',$data);
      }
    //fungsi untuk menangani apabila hapus barang
    public function hapus(){
        $id = $this->input->get('id'); //variabel id dari url
        $this->mbarang->delbarang($id);
        $this->session->set_flashdata("pesan", "Barang berhasil dihapus");
        redirect('barang');
    }
}

/* End of file barang.php */
/* Location: ./application/controllers/barang.php */

pada script saya buatkan juga komentar keterangan agar lebih mudah dipahami

bersambung ke bagian 2 Memulai Project CodeIgniter : Part 6 CRUD bagian 2

0 comments: