Cara Membuat Paging Di PHP


Cara Membuat Paging Di PHP

kali ini saya akan share tutorial cara membuat paging di PHP, paging sangat di perluakan dalam urusan menampilkan data karena data dalam jumlah banyak dalam satu halaman bukanlah pilihan yang baik, untuk itu diperlukan pemecahan data menjadi beberapa halaman dengan jumlah data yang terbatas setiap halamannya, dalam tutorial kali ini saya akan membatasi setiap data yang di tampilkan menjadi 10 baris.
pertama buatlah database terserah anda, kemudian jalankan sintak sql berikut di dalam database yang sudah anda buat
-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nama` varchar(25) DEFAULT NULL,
  `alamat` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=44 DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records of users
-- ----------------------------
INSERT INTO `users` VALUES ('1', 'Rohmat', 'Jlan. Pantura ciasem tengah');
INSERT INTO `users` VALUES ('2', 'Mimin', 'Jlan. Krajan timur');
INSERT INTO `users` VALUES ('3', 'Maman', 'Jlan. Krajan  barat');
INSERT INTO `users` VALUES ('4', 'Roni', 'Jlan. Mekar sari indah ');
INSERT INTO `users` VALUES ('5', 'Rachmat Hidayat', 'Jlan. Garuda 1');
INSERT INTO `users` VALUES ('6', 'Terzo', 'Jlan. Garuda 2');
INSERT INTO `users` VALUES ('7', 'carlos', 'Jlan. Garuda 3');
INSERT INTO `users` VALUES ('8', 'Dwi Susanti Mustari', 'Jlan. Garuda 4');
INSERT INTO `users` VALUES ('9', 'Desmond Satria Andrian', 'Jlan. Garuda 5');
INSERT INTO `users` VALUES ('10', 'Ka Ar', 'Jlan. Garuda 6');
INSERT INTO `users` VALUES ('11', 'Ka Keke', 'Jlan. Garuda 7');
INSERT INTO `users` VALUES ('12', 'Ka Deri', 'Jlan. Garuda 8');
INSERT INTO `users` VALUES ('13', 'Ka Rendy', 'Jlan. Garuda 9');
INSERT INTO `users` VALUES ('14', 'Ka Yanti', 'Jlan. Garuda 10');
INSERT INTO `users` VALUES ('15', 'Ka Nury', 'Jlan. Garuda 11');
INSERT INTO `users` VALUES ('16', 'Salma', 'Jlan. Garuda 12');
INSERT INTO `users` VALUES ('17', 'Terryn', 'Jlan. Garuda 13');
INSERT INTO `users` VALUES ('18', 'Hafiz', 'Jlan. Garuda 14');
INSERT INTO `users` VALUES ('19', 'Felicia', 'Jlan. Garuda 15');
INSERT INTO `users` VALUES ('20', 'Dhia', 'Jlan. Garuda 16');
INSERT INTO `users` VALUES ('21', 'Marvel', 'Jlan. Garuda 17');
INSERT INTO `users` VALUES ('22', 'Naqi', 'Jlan. Garuda 18');
INSERT INTO `users` VALUES ('23', 'Aca', 'Jlan. Garuda 19');
INSERT INTO `users` VALUES ('24', 'Mazaya', 'Jlan. Garuda 20');
INSERT INTO `users` VALUES ('25', 'Ahliva', 'Jlan. Garuda 21');
INSERT INTO `users` VALUES ('26', 'Fatih ', 'Jlan. Garuda 22');
INSERT INTO `users` VALUES ('27', 'Kareem', 'Jlan. Garuda 23');
INSERT INTO `users` VALUES ('28', 'Najwa', 'Jlan. Garuda 24');
INSERT INTO `users` VALUES ('29', 'Joshua', 'Jlan. Garuda 25');
INSERT INTO `users` VALUES ('30', 'Marciello', 'Jlan. Garuda 26');
INSERT INTO `users` VALUES ('31', 'Alisha', 'Jlan. Garuda 27');
INSERT INTO `users` VALUES ('32', 'Sakif', 'Jlan. Garuda 28');
INSERT INTO `users` VALUES ('33', 'Kay', 'Jlan. Garuda 29');
INSERT INTO `users` VALUES ('34', 'Shafa', 'Jlan. Garuda 30');
INSERT INTO `users` VALUES ('35', 'Afya', 'Jlan. Garuda 31');
INSERT INTO `users` VALUES ('36', 'Athala', 'Jlan. Garuda 32');
INSERT INTO `users` VALUES ('37', 'Gelar', 'Jlan. Garuda 33');
INSERT INTO `users` VALUES ('38', 'Gyan', 'Jlan. Garuda 34');
INSERT INTO `users` VALUES ('39', 'AliaZahra', 'Jlan. Garuda 35');
INSERT INTO `users` VALUES ('40', 'Nabil', 'Jlan. Garuda 36');
INSERT INTO `users` VALUES ('41', 'Rangga', 'Jlan. Garuda 37');
INSERT INTO `users` VALUES ('42', 'Aramazaya', 'Jlan. Garuda 38');
INSERT INTO `users` VALUES ('43', 'Amara', 'Jlan. Garuda 39');
kemudian buatlah project dengan nama terserah anda lalu salin kode berikut dan simpan file dengan nama koneksi.php
<?php
 $host = 'localhost';
 $user = 'root';
 $pass = '';
 $db = 'belajar_paging';

 $conn = mysql_connect($host, $user, $pass);
 mysql_select_db($db, $conn);
keterangan :
ganti isi dari $user, $pass dan $db, sesuai dengan username, password dan database anda
setelah koneksi dibuat sekarang buat file dengan nama index.php dan salin kode berikut
<?php require_once __DIR__.'/koneksi.php'; ?> 
<!DOCTYPE html>
<html>
<head>
<title>MEMBUAT PAGING DI PHP</title>
<style type="text/css">
body { font-family: Verdana; font-size: 14px; }
.container { margin: auto; width: 800px; }
.container table { width: 100%; }
.container table thead tr,
.container table tfoot tr { height: 40px; }
.container table thead tr { background-color: #000000; color: #FFFFFF; }
.container table tfoot tr th { border-bottom: 1px solid #000000; }
.container table tbody tr:nth-child(even) { background-color: #EEEEEE; }
.container table tbody tr:nth-child(odd) { background-color: #FFFFFF; }
.container table tbody tr td { padding: 5px 10px; }
.container .pagination { display: inline-block; }
.container .pagination li { list-style: none; float: left; margin: 0 10px; }
.container .pagination li a { text-decoration: none; font-size: 16px; }
</style>
</head>
<body>
<div class="container">
<?php
 // set page
 $page = isset($_GET['page']) ? (int)$_GET['page'] : 1;

 // data akan di tampilkan 10 baris perhalaman
 $perpage = 10;

 // metentukan offset
 // offset sendiri menentukan data yang akan di lewati setiap baris
 $limit = ($page - 1) * $perpage;

 $prev = 1;
 $next = 2;

 // menentukan angka awal untuk paging
 $start_page = ($page - $prev) < 1 ? 1 : ($page - $prev);

 // set query
 $sql = 'SELECT * FROM users';

 // menentukan jumlah data yang ada di table users
 $rs = mysql_query($sql);
 $record = mysql_num_rows($rs);

 // menentukan total paging
 $total_page = ceil($record / $perpage);

 // menentukan jumlah angka yang akan di tampilkan
 $display_page = $start_page + $prev + $next;
 if($display_page > $total_page){
  $display_page = $total_page;
 }

 // memecah data berdasarkan :
 // $limit : data awal yang akan di lewati
 // $perpage : jumlah data yang akan di tampilkan
 $sql .= ' LIMIT '.$limit.','.$perpage;
 $rs = mysql_query($sql);
?>
<table>
<thead>
 <tr>
 <th>ID</th>
 <th>NAMA</th>
 <th>ALAMAT</th>
 </tr>
</thead>
<tbody>
 <?php
  while($row = mysql_fetch_array($rs)){
  $id = $row['id'];
  $nama = $row['nama'];
  $alamat = $row['alamat'];
 ?>
 <tr>
 <td align="center" width="40"><?php echo $id; ?></td>
 <td><?php echo $nama; ?></td>
 <td><?php echo $alamat; ?></td>
 </tr>
 <?php } ?>
</tbody>
<tfoot>
 <tr>
 <th colspan="3">
 <?php
  $paging = null;
  if($total_page > 1){
   $paging .= '<ul class="pagination">';

   if($page > ($prev + 1)){
    $paging .= '<li><a href="index.php?page=1">first</a></li>';
    $paging .= '<li><a href="index.php?page='.($page - 1).'">prev</a></li>';
   }

   for($i=$start_page; $i<=$display_page; $i++){
    if($i == $page){
     $paging .= '<li><a href="#'.$i.'">'.$i.'</a></li>';
    }else{
     $paging .= '<li><a href="index.php?page='.$i.'">'.$i.'</a></li>';
    }
   }

   if($total_page > $display_page){
    $paging .= '<li><a href="index.php?page='.($page + 1).'">next</a></li>';
    $paging .= '<li><a href="index.php?page='.$total_page.'">last</a></li>';
   }

   $paging .= '<ul>';
  }
  echo $paging;
 ?>
 </th> 
 </tr>
</tfoot>
</table>
</div>
</body>
</html>
anda bisa mengganti jumlah data yang akan di tampilkan di setiap page dengan merubah angka pada $perpage sesuai dengan kebutuhan anda.
Ok, sampai disini dulu tutorial kali ini, selamat mencoba dan semoga barmanfaat.

Berbagi Via

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

No comments:

Post a Comment