Faber Nainggolan Blog's

Artikel, Tutorial Pemrograman, Tutorial database, PHP dan Framework

LightBlog

Melanjutkan tutorial Memulai Project CodeIgniter : Part 6 CRUD bagian 2 kali ini saya akan membagikan tutorial untuk membuat paging dan sea...

Memulai Project CodeIgniter : Part 7 Paging dan Pencarian

Melanjutkan tutorial Memulai Project CodeIgniter : Part 6 CRUD bagian 2 kali ini saya akan membagikan tutorial untuk membuat paging dan searching pada CRUD yang telah kita buat.

Oke saya anggap untuk proses awal nya sudah harus dilakukan dan ini merupakan tutorial lanjutan. Saya harapkan tahap demi tahap diperhatikan agar penyisipan skripnya berjalan dengan baik : jika belum dibaca silakan di klik Label CodeIgnter untuk melihat artikel mengenai codeigniter sebelumnya.

1. Config

pada file autoload.php pada folder ./application/config/ tambahkan library pagination buat seperti berikut
$autoload['libraries'] = array('database','session','form_validation','pagination');

2. Controller


buka controller Barang.php pada folder aplication/controllers dan pada baris public function index() tambahkan script untuk paging, ubah skrip sebelumnya menjadi seperti dibawah ini :

public function index(){
      $data['judul'] = 'CRUD CodeIgniter Studi Kasus Barang'; //judul title
      
      //pagination
      $page=$this->input->get('per_page');
      $batas=1; //jlh data yang ditampilkan per halaman
      if(!$page)://jika page bernilai kosong maka batas akhir akan di set 0
        $offset = 0;
      else:
        $offset = $page; // jika tidak kosong maka nilai batas akhir nya akan diset nilai page terakhir
      endif;

      $config['page_query_string'] = TRUE; //mengaktifkan pengambilan method get pada url default
      $config['base_url'] = base_url().'barang?';   //url yang muncul ketika tombol pada paging diklik
      $config['total_rows'] = $this->mbarang->countbarang(); // jlh total barang
      $config['per_page'] = $batas; //batas sesuai dengan variabel batas
      $config['uri_segment'] = $page; //merupakan posisi pagination dalam url pada kesempatan ini saya menggunakan method get untuk menentukan posisi pada url yaitu per_page
      $config['full_tag_open'] = '<ul class="pagination">';
      $config['full_tag_close'] = '</ul>';
      $config['first_link'] = '&laquo; First';
      $config['first_tag_open'] = '<li class="prev page">';
      $config['first_tag_close'] = '</li>';
      $config['last_link'] = 'Last &raquo;';
      $config['last_tag_open'] = '<li class="next page">';
      $config['last_tag_close'] = '</li>';
      $config['next_link'] = 'Next &rarr;';
      $config['next_tag_open'] = '<li class="next page">';
      $config['next_tag_close'] = '</li>';
      $config['prev_link'] = '&larr; Prev';
      $config['prev_tag_open'] = '<li class="prev page">';
      $config['prev_tag_close'] = '</li>';
      $config['cur_tag_open'] = '<li class="active"><a href="">';
      $config['cur_tag_close'] = '</a></li>';

      $config['num_tag_open'] = '<li class="page">';
      $config['num_tag_close'] = '</li>';
      $this->pagination->initialize($config);
      $data['page_halaman']=$this->pagination->create_links();
      $data['jlhpage']=$page;

      $data['querybarang'] = $this->mbarang->getallbarang($batas,$offset); //model semua barang
      
      //template views
      $this->load->view('header',$data);
      $this->load->view('barang/vbarang',$data); //load views vbarang
      $this->load->view('footer',$data);
    }

Penjelasan

  1. pada baris $config['total_rows'] total diambil memalui query yang ditambahkan pada model
  2. pada baris $data['querybarang'] getallbarang berisi variabel $batas dan $offset untuk membatasi jumlah per halaman yang ditangani melalui query di model


Masih pada controller Barang.php selanjutnya tambahkan sebuah function cari() untuk menangani pencarian nantinya dan buat seperti dibawah ini :

public function cari(){
        $key= $this->input->get('key'); //method get key
        $page=$this->input->get('per_page');  //method get per_page

        $search=array(
            'nama_brg'=> $key,
            'barcode'=> $key
        ); //array pencarian yang akan dibawa ke model

        $batas=5; //jlh data yang ditampilkan per halaman
        if(!$page): //jika page bernilai kosong maka batas akhirna akan di set 0
           $offset = 0;
        else:
           $offset = $page; // jika tidak kosong maka nilai batas akhir nya akan diset nilai page terakhir
        endif;

        $config['page_query_string'] = TRUE; //mengaktifkan pengambilan method get pada url default
        $config['base_url'] = base_url().'barang/?key='.$key;   //url yang muncul ketika tombol pada paging diklik
        $config['total_rows'] = $this->mbarang->countbarangsearch($search); // jlh total barang
        $config['per_page'] = $batas; //batas sesuai dengan variabel batas
        $config['uri_segment'] = $page; //merupakan posisi pagination dalam url pada kesempatan ini saya menggunakan method get untuk menentukan posisi pada url yaitu per_page
        $config['full_tag_open'] = '<ul class="pagination">';
        $config['full_tag_close'] = '</ul>';
        $config['first_link'] = '&laquo; First';
        $config['first_tag_open'] = '<li class="prev page">';
        $config['first_tag_close'] = '</li>';
        $config['last_link'] = 'Last &raquo;';
        $config['last_tag_open'] = '<li class="next page">';
        $config['last_tag_close'] = '</li>';
        $config['next_link'] = 'Next &rarr;';
        $config['next_tag_open'] = '<li class="next page">';
        $config['next_tag_close'] = '</li>';
        $config['prev_link'] = '&larr; Prev';
        $config['prev_tag_open'] = '<li class="prev page">';
        $config['prev_tag_close'] = '</li>';
        $config['cur_tag_open'] = '<li class="active"><a href="">';
        $config['cur_tag_close'] = '</a></li>';
        $config['num_tag_open'] = '<li class="page">';
        $config['num_tag_close'] = '</li>';
        $this->pagination->initialize($config);
        $data['page_halaman']=$this->pagination->create_links();
        $data['jlhpage']=$page;

        $data['judul'] = 'CRUD CodeIgniter Studi Pencarian Kasus Barang'; //judul title
        $data['querybarang'] = $this->mbarang->getallbarang($batas,$offset,$search); //query model semua barang

        //template views
        $this->load->view('header',$data);
        $this->load->view('barang/vbarang',$data); //load views vbarang
        $this->load->view('footer',$data);
    }



3. Model

Buka model Mbarang.php pada folder aplication/models dan pada function getallbarang() ubah skrip seperti dibawah ini :

function getallbarang($batas =null,$offset=null,$key=null) {
    $this->db->from($this->tabel);
    if($batas != null){
       $this->db->limit($batas,$offset);
    }
    if ($key != null) {
       $this->db->or_like($key);
    }
    $query = $this->db->get();

    //cek apakah ada barang
    if ($query->num_rows() > 0) {
        return $query->result();
    }
}

kemudian tambahkan sebuah function untuk menangani jumlah total field barang seperti dibawah ini :

function countbarang(){
    $query = $this->db->get($this->tabel)->num_rows();
    return $query;
}

selanjutnya buat sebuah function kembali untuk menangani jumlah total pencarian

function  countbarangsearch($orlike) {
    $this->db->or_like($orlike);
    $query = $this->db->get($this->tabel);

    return $query->num_rows();
}

3. Views

selanjutnya kita beralih ke tampilanya buka file vbarang.php pada folder application/views dan buat seperti dibawah ini :

<section>
<div class="container"> 
 <h1>Data Barang</h1>
  <a href="<?php echo base_url();?>barang/tambah" class="button">Tambah</a>
  <div class="pesan-sukses"><?php echo $this->session->flashdata("pesan");?></div>	
 <form action="<?php echo base_url();?>barang/cari/">
 <div class="inputgroup">
     <input name="key" value="" class="formcontrol" placeholder="Search" type="text" >
     <span class="input-group-btn">
        <button class="btn-default" type="submit">Cari</button>
     </span>
     <div class="clear"></div>
</div>
</form>
  <table class="table">
  	<tr>
  		<th>No</th>
  		<th>Kode</th>
  		<th>Barcode</th>
  		<th>Nama Barang</th>
  		<th>Harga </th>
  		<th>Jenis </th>
  		<th>Satuan </th>
  		<th>Stok </th>
  		<th>Keterangan </th>
  		<th></th>
  	</tr>
  	<?php if(!$querybarang){?>
  	 <tr><td colspan="9">Data Masih Kosong</td>	</tr>
  	<?php }else{
  	  $no =$jlhpage;	
  	  foreach ($querybarang as $rstbrg) {$no++;
  	?>
  	<tr>
  		<td><?php echo $no;?></td>
  		<td>#<?php echo $rstbrg->kode_brg;?></td>
  		<td><?php echo $rstbrg->barcode;?></td>
  		<td><?php echo $rstbrg->nama_brg;?></td>
  		<td><?php echo $rstbrg->harga_brg;?></td>
  		<td><?php echo $rstbrg->jenis;?></td>
  		<td><?php echo $rstbrg->satuan;?></td>
  		<td><?php echo $rstbrg->stok_brg;?></td>
  		<td><?php echo $rstbrg->keterangan;?></td>
  		<td><a href="<?php echo base_url()?>barang/edit/?id=<? echo $rstbrg->kode_brg;?>">Edit</a>
  			<a href="<?php echo base_url()?>barang/detail/?id=<? echo $rstbrg->kode_brg;?>">Detail</a>
  			<a onclick="return KonfirmasiHapus()" href="<?php echo base_url()?>barang/hapus/?id=<? echo $rstbrg->kode_brg;?>">Hapus</a>
  		</td>
  	</tr>
  	<?php }}?>
  </table>
  <div class="pagination">
  	<span class="pagination-btns">
          <?=$page_halaman?>
          <div class="clear"></div>
      </span>
        </div> 
</div>
</section>
<script type="text/javascript">
function KonfirmasiHapus() {
  return confirm("Apa anda yakin akan menghapus data ini?");
}
</script>


pada skrip vbarang.php saya tambahkan sebuah form untuk pencarian dan pada bagian panel-footer saya tambahkan variabel untuk paging nya.


4. Output

pada hasil akhirnya akan tampil seperti berikut


Tampilan halaman setelah di terapkan script diatas




Paging halaman 2


Pencarian dengan key meja


Demikian tutorial kali ini semoga bermanfaat.
Tetap ikuti artikel mengenani codeigniter di blog saya

0 comments: