Membuat Class Pagination Sendiri


Membuat Class Pagination Sendiri

kemarin saya sudah share cara membuat class HTML Helper sendiri, nah sekarang saya akan share cara membuat class Pagination sendiri, dengan menggunakan class Pagination ini anda tidak perlu membuat pagination secara manual karena pagination akan di buat secara otomatis berdasarkan properties yang di tentukan pada saat membuat pagination.
Dulu saya juga pernah share cara membuat Pagination di PHP, bedanya dengan tutorial yang dulu adalah pagination di buat secara manual tapi kali ini pagination di buat secara otomatis dengan menentukan beberapa properti yang di akan di tentukan, Ok langsung saja ke pembahasan pertama buat lah database dengan nama terserah anda kemudian masukan data berikut ke dalam database yang sudah anda buat
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nama` varchar(50) DEFAULT NULL,
  `alamat` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=104 DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records of users
-- ----------------------------
INSERT INTO `users` VALUES ('1', 'pramana', 'Jln. Kemana mana asal senang 1');
INSERT INTO `users` VALUES ('2', 'wildan mukhollad', 'Jln. Kemana mana asal senang 2');
INSERT INTO `users` VALUES ('3', 'muhammad thamrin', 'Jln. Kemana mana asal senang 3');
INSERT INTO `users` VALUES ('4', 'Eka Djunarsjah', 'Jln. Kemana mana asal senang 4');
INSERT INTO `users` VALUES ('5', 'Arky Gilang Wahab', 'Jln. Kemana mana asal senang 5');
INSERT INTO `users` VALUES ('6', 'kurnia', 'Jln. Kemana mana asal senang 6');
INSERT INTO `users` VALUES ('7', 'Yuliana Herman', 'Jln. Kemana mana asal senang 7');
INSERT INTO `users` VALUES ('8', 'Pandu Adi Minarno', 'Jln. Kemana mana asal senang 8');
INSERT INTO `users` VALUES ('9', 'Rudi Susilo', 'Jln. Kemana mana asal senang 9');
INSERT INTO `users` VALUES ('10', 'Indrianawati', 'Jln. Kemana mana asal senang 10');
INSERT INTO `users` VALUES ('11', 'hengky hermawan', 'Jln. Kemana mana asal senang 11');
INSERT INTO `users` VALUES ('12', 'Achmad Taufik', 'Jln. Kemana mana asal senang 12');
INSERT INTO `users` VALUES ('13', 'Ruslan Subki', 'Jln. Kemana mana asal senang 13');
INSERT INTO `users` VALUES ('14', 'Kasmita Widodo', 'Jln. Kemana mana asal senang 14');
INSERT INTO `users` VALUES ('15', 'Rudy H Chen', 'Jln. Kemana mana asal senang 15');
INSERT INTO `users` VALUES ('16', 'Raden Gumilar', 'Jln. Kemana mana asal senang 16');
INSERT INTO `users` VALUES ('17', 'heveadi Luthfi perdan', 'Jln. Kemana mana asal senang 17');
INSERT INTO `users` VALUES ('18', 'ilham bee', 'Jln. Kemana mana asal senang 18');
INSERT INTO `users` VALUES ('19', 'samsoel maarif', 'Jln. Kemana mana asal senang 19');
INSERT INTO `users` VALUES ('20', 'soni darmawan', 'Jln. Kemana mana asal senang 20');
INSERT INTO `users` VALUES ('21', 'Risfan Hidayat', 'Jln. Kemana mana asal senang 21');
INSERT INTO `users` VALUES ('22', 'Adam Taufik', 'Jln. Kemana mana asal senang 22');
INSERT INTO `users` VALUES ('23', 'Aditya Yudha Prawira', 'Jln. Kemana mana asal senang 23');
INSERT INTO `users` VALUES ('24', 'yasir', 'Jln. Kemana mana asal senang 24');
INSERT INTO `users` VALUES ('25', 'Akhmad Syarbini', 'Jln. Kemana mana asal senang 25');
INSERT INTO `users` VALUES ('26', 'Ghufran Musta\'an', 'Jln. Kemana mana asal senang 26');
INSERT INTO `users` VALUES ('27', 'IMAN SUDJATI', 'Jln. Kemana mana asal senang 27');
INSERT INTO `users` VALUES ('28', 'Yuliati Musawir Husniati', 'Jln. Kemana mana asal senang 28');
INSERT INTO `users` VALUES ('29', 'syarif hidayat', 'Jln. Kemana mana asal senang 29');
INSERT INTO `users` VALUES ('30', 'Adi Arman Saputra', 'Jln. Kemana mana asal senang 30');
INSERT INTO `users` VALUES ('31', 'bagus anom', 'Jln. Kemana mana asal senang 31');
INSERT INTO `users` VALUES ('32', 'hamsah fansuri', 'Jln. Kemana mana asal senang 32');
INSERT INTO `users` VALUES ('33', 'Kelvin Mercyano', 'Jln. Kemana mana asal senang 33');
INSERT INTO `users` VALUES ('34', 'bambang deriyanto', 'Jln. Kemana mana asal senang 34');
INSERT INTO `users` VALUES ('35', 'Donni Cahyadi', 'Jln. Kemana mana asal senang 35');
INSERT INTO `users` VALUES ('36', 'Deni Rohimat', 'Jln. Kemana mana asal senang 36');
INSERT INTO `users` VALUES ('37', 'Feny Suharyono', 'Jln. Kemana mana asal senang 37');
INSERT INTO `users` VALUES ('38', 'rizal', 'Jln. Kemana mana asal senang 38');
INSERT INTO `users` VALUES ('39', 'infopekalongan', 'Jln. Kemana mana asal senang 39');
INSERT INTO `users` VALUES ('40', 'Yansen Li', 'Jln. Kemana mana asal senang 40');
INSERT INTO `users` VALUES ('41', 'Selly Nur Asrita', 'Jln. Kemana mana asal senang 41');
INSERT INTO `users` VALUES ('42', 'Alfandi Pramandaru', 'Jln. Kemana mana asal senang 42');
INSERT INTO `users` VALUES ('43', 'Luqmannul Hakim', 'Jln. Kemana mana asal senang 43');
INSERT INTO `users` VALUES ('44', 'sandi hidayat', 'Jln. Kemana mana asal senang 44');
INSERT INTO `users` VALUES ('45', 'kendy siswanto', 'Jln. Kemana mana asal senang 45');
INSERT INTO `users` VALUES ('46', 'Rachmat Hidayat', 'Jln. Kemana mana asal senang 46');
INSERT INTO `users` VALUES ('47', 'Terzo', 'Jln. Kemana mana asal senang 47');
INSERT INTO `users` VALUES ('48', 'carlos', 'Jln. Kemana mana asal senang 48');
INSERT INTO `users` VALUES ('49', 'Dwi Susanti Mustari', 'Jln. Kemana mana asal senang 49');
INSERT INTO `users` VALUES ('50', 'Desmond Satria Andrian', 'Jln. Kemana mana asal senang 50');
INSERT INTO `users` VALUES ('51', 'suryo wibowo', 'Jln. Kemana mana asal senang 51');
INSERT INTO `users` VALUES ('52', 'nugroho dwi muriawan', 'Jln. Kemana mana asal senang 52');
INSERT INTO `users` VALUES ('53', 'Samsung Adva', 'Jln. Kemana mana asal senang 53');
INSERT INTO `users` VALUES ('54', 'Resdy Benyamin', 'Jln. Kemana mana asal senang 54');
INSERT INTO `users` VALUES ('55', 'Harry Kautsar', 'Jln. Kemana mana asal senang 55');
INSERT INTO `users` VALUES ('56', 'ira shintia', 'Jln. Kemana mana asal senang 56');
INSERT INTO `users` VALUES ('57', 'Muhammad Taufik', 'Jln. Kemana mana asal senang 57');
INSERT INTO `users` VALUES ('58', 'Ricky Ryadi', 'Jln. Kemana mana asal senang 58');
INSERT INTO `users` VALUES ('59', 'Sam Amir', 'Jln. Kemana mana asal senang 59');
INSERT INTO `users` VALUES ('60', 'Ka Ar', 'Jln. Kemana mana asal senang 60');
INSERT INTO `users` VALUES ('61', 'Ka Keke', 'Jln. Kemana mana asal senang 61');
INSERT INTO `users` VALUES ('62', 'Ka Deri', 'Jln. Kemana mana asal senang 62');
INSERT INTO `users` VALUES ('63', 'Ka Rendy', 'Jln. Kemana mana asal senang 63');
INSERT INTO `users` VALUES ('64', 'Ka Yanti', 'Jln. Kemana mana asal senang 64');
INSERT INTO `users` VALUES ('65', 'Ka Nury', 'Jln. Kemana mana asal senang 65');
INSERT INTO `users` VALUES ('66', 'Salma', 'Jln. Kemana mana asal senang 66');
INSERT INTO `users` VALUES ('67', 'Terryn', 'Jln. Kemana mana asal senang 67');
INSERT INTO `users` VALUES ('68', 'Hafiz', 'Jln. Kemana mana asal senang 68');
INSERT INTO `users` VALUES ('69', 'Felicia', 'Jln. Kemana mana asal senang 69');
INSERT INTO `users` VALUES ('70', 'Dhia', 'Jln. Kemana mana asal senang 70');
INSERT INTO `users` VALUES ('71', 'Marvel', 'Jln. Kemana mana asal senang 71');
INSERT INTO `users` VALUES ('72', 'Naqi', 'Jln. Kemana mana asal senang 72');
INSERT INTO `users` VALUES ('73', 'Aca', 'Jln. Kemana mana asal senang 73');
INSERT INTO `users` VALUES ('74', 'Mazaya', 'Jln. Kemana mana asal senang 74');
INSERT INTO `users` VALUES ('75', 'Ahliva', 'Jln. Kemana mana asal senang 75');
INSERT INTO `users` VALUES ('76', 'Fatih ', 'Jln. Kemana mana asal senang 76');
INSERT INTO `users` VALUES ('77', 'Kareem', 'Jln. Kemana mana asal senang 77');
INSERT INTO `users` VALUES ('78', 'Najwa', 'Jln. Kemana mana asal senang 78');
INSERT INTO `users` VALUES ('79', 'Joshua', 'Jln. Kemana mana asal senang 79');
INSERT INTO `users` VALUES ('80', 'Marciello', 'Jln. Kemana mana asal senang 80');
INSERT INTO `users` VALUES ('81', 'Alisha', 'Jln. Kemana mana asal senang 81');
INSERT INTO `users` VALUES ('82', 'Sakif', 'Jln. Kemana mana asal senang 82');
INSERT INTO `users` VALUES ('83', 'Kay', 'Jln. Kemana mana asal senang 83');
INSERT INTO `users` VALUES ('84', 'Shafa', 'Jln. Kemana mana asal senang 84');
INSERT INTO `users` VALUES ('85', 'Afya', 'Jln. Kemana mana asal senang 85');
INSERT INTO `users` VALUES ('86', 'Athala', 'Jln. Kemana mana asal senang 86');
INSERT INTO `users` VALUES ('87', 'Gelar', 'Jln. Kemana mana asal senang 87');
INSERT INTO `users` VALUES ('88', 'Gyan', 'Jln. Kemana mana asal senang 88');
INSERT INTO `users` VALUES ('89', 'AliaZahra', 'Jln. Kemana mana asal senang 89');
INSERT INTO `users` VALUES ('90', 'Nabil', 'Jln. Kemana mana asal senang 90');
INSERT INTO `users` VALUES ('91', 'Rangga', 'Jln. Kemana mana asal senang 91');
INSERT INTO `users` VALUES ('92', 'Aramazaya', 'Jln. Kemana mana asal senang 92');
INSERT INTO `users` VALUES ('93', 'Amara', 'Jln. Kemana mana asal senang 93');
INSERT INTO `users` VALUES ('94', 'RZ', 'Jln. Kemana mana asal senang 94');
INSERT INTO `users` VALUES ('95', 'Mahesa', 'Jln. Kemana mana asal senang 95');
INSERT INTO `users` VALUES ('96', 'Dareen', 'Jln. Kemana mana asal senang 96');
INSERT INTO `users` VALUES ('97', 'Aqil', 'Jln. Kemana mana asal senang 97');
INSERT INTO `users` VALUES ('98', 'Aini', 'Jln. Kemana mana asal senang 98');
INSERT INTO `users` VALUES ('99', 'Sindu', 'Jln. Kemana mana asal senang 99');
INSERT INTO `users` VALUES ('100', 'Rais', 'Jln. Kemana mana asal senang 100');
INSERT INTO `users` VALUES ('101', 'Alisha', 'Jln. Kemana mana asal senang 101');
INSERT INTO `users` VALUES ('102', 'Iqli', 'Jln. Kemana mana asal senang 102');
INSERT INTO `users` VALUES ('103', 'Cikal', 'Jln. Kemana mana asal senang 103');
setelah table dan record sudah masuk kedalam database, sekarang buat lah projek dengan nama terserah anda lalu buat file dengan nama koneksi.php dan simpan file di dalam projek yang sudah anda buat, kemudian salin kode berikut
<?php
 $host = 'localhost';
 $user = 'root';
 $pass = '';
 $db = 'belajardb';

 $conn = mysql_connect($host, $user, $pass);
 mysql_select_db($db, $conn);
untuk host, user, pass dan db ganti dan sesuaikan dengan database yang sudah anda buat
setelah itu buat file dengan nama index.php dan simpan di dalam projek yang sudah anda buat kemudian salin kode berikut
<?php
 // load koneksi dan class Pagination
 require_once __DIR__.'/koneksi.php';
 require_once __DIR__.'/Pagination.php';

 // set data
 $page = isset($_GET['page']) ? (int) $_GET['page'] : 1;
 $perpage = 10;
 $limit = ($page - 1) * $perpage;

 // set query
 $sql = 'SELECT * FROM users';
 $record = mysql_query($sql);

 $sql .= ' LIMIT '.$limit.', '.$perpage;
 $rs = mysql_query($sql);

 // set total record
 $total_record = mysql_num_rows($record);

 // set properties pada class pagination
 $pagination = new Pagination(array('url'=>'index.php', 'page'=>$page, 'perpage'=>$perpage, 'total_record'=>$total_record));

 // get page active
 $page_active = $pagination->page_active();

 // get total page
 $total_page = $pagination->total_page();

 // get pagination
 $pg = $pagination->get();
?>
<!DOCTYPE html>
<html>
<head> 
<title>MEMBUAT CLASS PAGINATION</title>
<style type="text/css">
* { font-family: Verdana; font-size: 14px; }
.pg li { float: left; list-style: none; }
.pg li a { background-color: #EEEEEE; text-decoration: none; margin: 0 1px; padding: 5px 10px; }
.pg li a:hover { background-color: #DDDDDD; }
</style>
</head>
<body>
<table border="1">
 <thead>
 <tr>
  <th colspan="2">Total data : <?php echo $total_record; ?></th>
  <th>Page : <?php echo $page_active; ?> / <?php echo $total_page; ?></th>
 </tr>
 <tr>
  <th>ID</th>
  <th>NAMA</th>
  <th>ALAMAT</th>
 </tr>
 </thead>
 <tbody>
 <?php
 // fecth data
 while ($row = mysql_fetch_array($rs)) {
  $id = (int) $row['id'];
  $nama = $row['nama'];
  $alamat = $row['alamat'];
 ?>
 <tr>
  <td><?php echo $id; ?></td>
  <td><?php echo $nama; ?></td>
  <td><?php echo $alamat; ?></td>
 </tr>
 <?php } ?>
 </tbody>
</table>
<?php echo $pg; ?>
</body>
</html>
dan yang terakhir buat lah file dengan nama Pagination.php kemudian simpan file di dalam projek yang sudah anda buat lalu salin kode berikut, atau anda bisa mendownload class paginationnya disini
<?php
class Pagination {
 private $type = 'pagination-sm';
 private $url = null;
 private $page = 1;
 private $perpage = 10;
 private $prev = 1;
 private $next = 2;
 private $total_record = 0;
 private $link = null;
 private $response = null;
 private $html = null;

 public function __construct($request = array()) {
  $this->type = isset($request['type']) ? $request['type'] : $this->type;
  $this->url = isset($request['url']) ? $request['url'] : $this->url;
  $this->page = isset($request['page']) ? (int) $request['page'] : $this->page;
  $this->perpage = isset($request['perpage']) ? (int) $request['perpage'] : $this->perpage;
  $this->total_record = isset($request['total_record']) ? (int) $request['total_record'] : $this->total_record;
  $this->prev = isset($request['prev']) ? (int) $request['prev'] : $this->prev;
  $this->next = isset($request['next']) ? (int) $request['next'] : $this->next;
 }

 public function get() {
  $this->html = null;
  if ($this->total_page() > 1) {
   $this->html .= '<ul class="pagination '.$this->type.' custom-pagination">';
   if($this->page > ($this->prev + 1)) {
    $this->html .= '<li><a href="'.$this->url.'?page=1'.$this->parameters().'"><i class="fa fa-angle-double-left"></i></a></li>';
    $this->html .= '<li><a href="'.$this->url.'?page='.($this->page - 1).$this->parameters().'"><i class="fa fa-angle-left"></i></a>';
   }
   for($i=$this->start(); $i<=$this->display(); $i++){
    if($i == (int) $this->page){
     $this->html .= '<li class="active"><a href="#'.$i.'/">'.$i.'</a></li>';
    }else{
     $this->html .= '<li><a href="'.$this->url.'?page='.$i.$this->parameters().'">'.$i.'</a></li>';
    }
   }
   if($this->total_page() > $this->display()){
    $this->html .= '<li><a href="'.$this->url.'?page='.((int) $this->page + 1).$this->parameters().'"><i class="fa fa-angle-right"></i></a></li>';
    $this->html .= '<li><a href="'.$this->url.'?page='.$this->total_page().$this->parameters().'"><i class="fa fa-angle-double-right"></i></a></li>';
   }
   $this->html .= '</ul>';
  }
  return $this->html;
 }

 public function ordering($ordering = null, $sorting = null) {
  $url = array();
  $parameters = explode('&', $this->parameters());
  foreach ($parameters as $parameter) {
   if (!empty($parameter)) {
    list ($key, $val) = explode('=', $parameter);
    $url[$key] = $val;
   }
  }
  
  $url['ordering'] = $ordering;
  $url['sorting'] = $sorting;
  $this->link = $this->url.'?page='.$this->page;
  $this->link .= '&'.http_build_query($url, '&');
  return $this->link;
 }

 public function page_active() {
  return $this->page;
 }

 public function total_page() {
  return ceil((int) $this->total_record / (int) $this->perpage);
 }

 private function start() {
  return ((int) $this->page - (int) $this->prev) < 1 ? 1 : (int) $this->page - (int) $this->prev;
 }

 private function display() {
  $this->response = null;
  $this->response = $this->start() + (int) $this->prev + (int) $this->next;
  if($this->response > $this->total_page()) {
   $this->response = $this->total_page();
  }
  return $this->response;
 }

 private function parameters() {
  $this->response = null;
  if (isset($_GET)) {
   foreach ($_GET as $key=>$val) {
    if ($key != 'page') {
     $this->response .= '&'.$key.'='.$val;
    }
   }
  }
  return $this->response;
 }
}
ada beberapa function yang bisa anda gunakan di antaranya
get() : function ini akan menampilkan hasil pagination dari properti yang sudah di tentukan
page_active() : function ini menampilkan posisi page saat ini
total_page() : function ini menampilkan jumlah page
dalam Class Pagination anda bisa merubah properties yang sudah di tentukan secara default, propertis itu di antaranya
url type string default null
page type integer default 1
perpage type integer default 10
total_record type integer default 0
prev type integer default 1
next type integer default 2
Ok sampai disini dulu tutorial kali ini, selamat mencoba dan semoga bisa bermanfaat

Berbagi Via

Share Facebook Share Twitter Share Google+ Share Pinterest
Jangan lupa tinggalkan komentarnya ya :)

1 comment:

  1. ArenaDomino Partner Terbaik Untuk Permainan Kartu Anda!
    Halo Bos! Selamat Datang di ( arenakartu.org )
    Arenadomino Situs Judi online terpercaya | Dominoqq | Poker online
    Daftar Arenadomino, Link Alternatif Arenadomino Agen Poker dan Domino Judi Online Terpercaya Di Asia
    Daftar Dan Mainkan Sekarang Juga 1 ID Untuk Semua Game
    ArenaDomino Merupakan Salah Satu Situs Terbesar Yang Menyediakan 9 Permainan Judi Online Seperti Domino Online Poker Indonesia,AduQQ & Masih Banyak Lain nya,Disini Anda Akan Nyaman Bermain :)

    Game Terbaru : Perang Baccarat !!!

    Promo :
    - Bonus Rollingan 0,5%, Setiap Senin
    - Bonus Referral 20% (10%+10%), Seumur Hidup


    Wa :+855964967353
    Line : arena_01
    WeChat : arenadomino
    Yahoo! : arenadomino

    Situs Login : arenakartu.org

    Kini Hadir Deposit via Pulsa Telkomsel / XL ( Online 24 Jam )
    Min. DEPO & WD Rp 20.000,-

    INFO PENTING !!!
    Untuk Kenyamanan Deposit, SANGAT DISARANKAN Untuk Melihat Kembali Rekening Kami Yang Aktif Sebelum Melakukan DEPOSIT di Menu SETOR DANA.

    ReplyDelete