Thursday, December 25, 2014

Jepretcode: Codeigniter Cara Membuat Pagination

Codeigniter Cara Membuat Pagination

Didalam tampilan tabel kadang data memiliki banyak misalnya sekitar 100 data maka jika ditampilkan maka akan membuat tabel panjang kebawah, alangkah bagusnya dibuat jika dibagi halamannya, jadi data yang 100 jika dibagi 10 maka tabel membuat page atau halaman sampai sepuluh, sekalian setting ada prev atau mundur dan next atau maju bisa di lihat seperti gambar dibawah ini.
Lalu bagaimana cara membuat page atau halaman di codeigniter tersebut?. Pada postingan sebelumnya sudah diberikan contoh hasilnya yang dapat dilihat pada postingan cara membuat kode dengan mengambil max_id secara otomatis ditambah 1, namun agar lebih jelas berikut caranya:
  • Download codeigniter disini saya menggunakan versi 2.2.0 dan extract di localhost dengan nama pagination
  • Hilangkan index.php dengan cara disini
  • Buat database dengan nama db_pagination dan buat nama tabel seperti dibawah ini
CREATE TABLE IF NOT EXISTS `mahasiswa` (
  `id` int(11) NOT NULL,
  `kode_mahasiswa` varchar(15) NOT NULL,
  `nama_mahasiswa` varchar(250) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  • Lalu Isi tabel dengan data sebagai berikut
INSERT INTO `mahasiswa` (`id`, `kode_mahasiswa`, `nama_mahasiswa`) VALUES
(1, 'MHS-2014-0001', 'jepretcode'),
(2, 'MHS-2014-0002', 'jepretcode 2'),
(3, 'MHS-2014-0003', 'jepretcode 3'),
(4, 'MHS-2014-0004', 'jepretcode 4'),
(5, 'MHS-2014-0005', 'jepretcode 5'),
(6, 'MHS-2014-0006', 'jepretcode 6'),
(7, 'MHS-2014-0007', 'jepretcode 7'),
(8, 'MHS-2014-0008', 'jepretcode 8'),
(9, 'MHS-2014-0009', 'jepretcode 9'),
(10, 'MHS-2014-0010', 'jepretcode 10'),
(11, 'MHS-2014-0011', 'jepretcode 11'),
(12, 'MHS-2014-0012', 'jepretcode 12'),
(13, 'MHS-2014-0013', 'jepretcode 13'),
(14, 'MHS-2014-0014', 'jepretcode 14'),
(15, 'MHS-2014-0015', 'jepretcode 15');
  • Rubah default controller "welcome" menjadi "c_pagination" yang ada dalam file routes.php dan folder application\config\
$route['default_controller'] = "welcome";

Menjadi

$route['default_controller'] = "c_pagination";
  • Berikutnya adalah membuat controller untuk pagination untuk sebagai contoh buatlah dengan nama c_pagination.php dan kodenya sebagai berikut lalu letakkan didalam folder appication\controller\:
<?php

class C_pagination extends CI_Controller{
 
 public function __construct(){
  parent::__construct();
  
  $this->load->model('m_pagination');
 }
 
 public function index(){
  redirect('c_pagination/lihat_pagination');
 } 
 
 //MODUL MAHASISWA
  
 public function lihat_pagination(){
  if($this->uri->segment(3)==""){
   $offset=0;
  }else{
   $offset=$this->uri->segment(3);
  }
  $limit = 7; 
  $data['mahasiswa'] = $this->m_pagination->getAllMahasiswa($offset, $limit);
  $data['count'] = $this->m_pagination->getAllMahasiswa_count(); 
  $config = array();
  $config['base_url'] = base_url(). 'c_pagination/lihat_pagination/';
  $config['per_page'] = $limit;
  $config['uri_segment'] = 3;
  $config['num_links'] = 5;  
  $config['first_tag_open'] = '<li>';
  $config['first_link'] = 'First';
  $config['first_tag_close'] = '</li>';
  $config['prev_link'] = 'Prev';
  $config['prev_tag_open'] = '<li>';
  $config['prev_tag_close'] = '</li>';
  $config['cur_tag_open'] = '<li class="active"><a href>';
  $config['cur_tag_close'] = '</a></li>';
  $config['next_link'] = 'Next';
  $config['next_tag_open'] = '<li>';
  $config['next_tag_close'] = '</li>';
  $config['num_tag_open'] = '<li>';
  $config['num_tag_close'] = '</li>';
  $config['last_tag_open'] = '<li>';
  $config['last_link'] = 'Last';
  $config['last_tag_close'] = '</li>';
  $config['total_rows'] = $data['count'];
  $this->pagination->initialize($config);
  $this->session->set_userdata('row', $this->uri->segment(3));
  $data['error'] = "";    
  $this->load->model('m_pagination');  
  $this->load->view('pagination', $data);
 }   
}
  • Kemudian buatlah model untuk pagination dengan nama m_pagination.php dengan kode seperti dibawah ini dan letakkan di dalam folder application\model\
<?php 

class M_pagination extends CI_Model{
 
 public function __construct(){
  parent::__construct();
 }  
 public function getAllMahasiswa($offset, $limit){
  $query = $this->db->query("SELECT * FROM mahasiswa ORDER BY kode_mahasiswa DESC LIMIT $offset, $limit");
  return $query;
 }
 
 public function getAllMahasiswa_count(){
  $query = $this->db->query("
   SELECT * FROM mahasiswa
  ");
  return $query->num_rows();
 }
}
  • Buatlah tampilannya dengan nama pagination.php dan letakkan di dalam folder application\views\ dengan kode dibawah ini
<!DOCTYPE html>
<html lang="en">
<head>
    <style>
    body {
  padding-top: 10px;
  padding-left: 10px;
  padding-right: 20px;
  margin: 0;
  font-family: "Helvetica";
  font-size: 14px;
  line-height: 18px;
  color: #000000;
  background-color: #ffffff;
 }
 
 .container,
 .navbar-fixed-top .container,
 .navbar-fixed-bottom .container {
 width: 80%;
 }

 .table {
  width: 80%;
  margin-bottom: 18px;
 }

 .table th,
 .table td {
  padding: 8px;
  line-height: 18px;
  text-align: left;
  vertical-align: top;
  border-top: 1px solid #dddddd;
 }

 .table th {
  font-weight: bold;
 }

 .table thead th {
  vertical-align: bottom;
 }
 
 .table-bordered {
  border: 1px solid #dddddd;
  border-collapse: separate;
  *border-collapse: collapsed;
  border-top: 0;
  border-left: 0;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
        border-radius: 4px;
 }

 .table-bordered th,
 .table-bordered td {
 border-left: 1px solid #dddddd;
 }

 .table-striped tbody tr:nth-child(odd) td,
 .table-striped tbody tr:nth-child(odd) th {
 background-color: #f9f9f9;
 }

 .table tbody tr:hover td,
 .table tbody tr:hover th {
 background-color: #f5f5f5;
 }
 
 #Halaman
  .pagination {
  height: 36px;
  margin: 18px 0;
  }
 
  .pagination ul {
  display: inline-block;
  }

  .pagination li {
  display: inline;
  }

  .pagination a {
  padding: 10px 14px;
  }

  .pagination a:hover,
  .pagination .active a {
  background-color: #f0f0f0;
  }
  
    </style>
</head>
<body>
<center>
 <div class="container"> 
  <h1>Lihat Mahasiswa</h1>
 

  <table class="table table-striped table-bordered">
   <thead>
    <th>No</th>
    <th>Kode Mahasiswa</th>
    <th>Nama Mahasiswa</th>
   </thead>
   <tr>
    <?php $no=1; 
     foreach($mahasiswa->result() as $row){ 
    ?>
    <td><?php echo $this->session->userdata('row')+$no; ?></td>
    <td><?php echo ucwords($row->kode_mahasiswa); ?></td>
    <td><?php echo ucwords($row->nama_mahasiswa); ?></td>
   </tr>
    <?php 
     $no++;
     } 
    ?>
  </table>  
</div>
  <div class="pagination">
   <ul>
    <?php echo $this->pagination->create_links(); ?>
   </ul>
  </div>
  <hr />
  <div>
   <div class="span2">
   <footer>
   <p>&copy; jepretcode 2014.</p>
   </footer>
   </div>
  </div>

</center>
  </body>
</html>
  • Baiklah coba dijalankan dilocalhost untuk dicoba. apakah yang terjadi?. jika dicoba maka akan tampil kesalahan Fatal error: Call to undefined function redirect, bagaimana cara mengatasinya?. silahkan lihat cara mengatasi kesalahan Fatal error: Call to undefined function redirect()
  • Setelah melakukan perbaikan sesuai perintah diatas maka coba lagi diulang refresh localhost lihat apa yang terjadi?. masih mendapatkan Fatal Error: dengan Message: Undefined property: C_Pagination::$db sehingga tidak bisa dijalankan, jika ketemu kesalahan seperti ini maka untuk lihat cara mengatasi kesalahan Fatal Error: Undefined property: C_pagination::$db
  • Setelah melakukan perbaikan lakukan refresh localhost lagi. lalu kesalahan apa lagi yang dijumpai?. Yaitu kesalahan A Database Error Occurred "No database selected'. Berikut cara mengatasi kesalahan No database selected
  • Lakulan lagi refresh localhost Anda setelah mengatasi masalah diatas. lalu lihat kesalahan apa lagi yang akan dijumpai?. yaitu. Fatal error: Call to a member function set_userdata() on a non object dengan pesan Message: Undefined property:C_pagination::$session. lakukan cara mengatasi kesalahan Undefined property: C_pagination::$session
  • Lakukan refresh ulang lagi dan tentunya menemukan kesalahan An Error Was Encountered In order to use the Session class you are required to set an encryption key. lihat cara mengatasinya disini
  • Lakukan lagi refresh ulang dan lihat hasilnya.
Itulah salah satu cara membuat pagination di codeigniter. lihat video tutorial cara membuat pagination dengan codeigniter.

4 comments:


  1. A Database Error Occurred

    Error Number: 1327

    Undeclared variable: lihat_pagination

    SELECT * FROM tblguru ORDER BY nama_guru DESC LIMIT lihat_pagination, 7

    Filename: C:\xampp\htdocs\e-learning\system\database\DB_driver.php

    Line Number: 330

    ReplyDelete
  2. saya punya masalah jadi pas dijalanin paging nya jalan tapi tampilan di pagging nya tetep angka 1 itu kenapa yah mas?mohon solusinya terima kasih

    ReplyDelete