Fungsi Pagination MySQL

Baik selamat datang kembali temen-temen. Kali ini saya akan sharing mengenai cara membuat function pagination menggunakan PHP dengan database MySQL.
Oke, kita langsung aja mulai. Pertama kita akan membuat database nya terlebih dahulu, kalo misalkan databasenya sudah disiapkan punya temen-temen sendiri juga boleh.

Kita akan membuat database dengan nama tutor_pagination.

CREATE DATABASE `tutor_pagination`

Dan nama table pagination.
 
CREATE TABLE IF NOT EXISTS `pagination` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nama` varchar(50) NOT NULL,
  `seri` varchar(35) NOT NULL,
  `produksi` varchar(50) NOT NULL,
  `harga` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)

)

Kemudian kita akan isi table nya dengan data berikut :

INSERT INTO `pagination` (`id`, `nama`, `seri`, `produksi`, `harga`) VALUES
(1, 'Build Strike', 'Build Fighters', 'BANDAI', '190'),
(2, 'Zaku Amazing', 'Build Fighters', 'BANDAI', '210'),
(3, 'Wing Gundam Fenice', 'Build Fighters', 'BANDAI', '220'),
(4, 'Gundam X Maoh', 'Build Fighters', 'BANDAI', '230'),
(5, 'Build Gundam MK II', 'Build Fighters', 'BANDAI', '230'),
(6, 'Sengoku Astray Gundam', 'Build Fighters', 'BANDAI', '230'); 

Nah, ketika sudah selesai persiapan databasenya, kita akan bergelut dengan script-nya, hehehe...
Kita sekarang akan membuat page untuk view data dengan nama index.php.

<?php
//Memanggil file pagination.php
include("pagination.php");
//Membuat koneksi untuk mengakses database
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db("tutor_pagination");
$limitData = 2; //Limit data untuk tiap page
if(isset($_GET['p']))
{
 $pages = $_GET['p'];
} else {
 $pages = 1;
}
$start = ($pages-1) * $limitData;
//Deklarasi variable
$show = "";
$no = 1 + $start;
//Membuat query untuk menampilkan data
$sql = "SELECT id, nama, seri, produksi, harga FROM pagination";
$query = mysql_query( $sql ." LIMIT ". $start .", ". $limitData ." " );
while( $data = mysql_fetch_array( $query )) {
 $show .="
 <tr>
  <td>".$no."</td>
  <td>".$data['nama']."</td>
  <td>".$data['seri']."</td>
  <td>".$data['produksi']."</td>
  <td>".$data['harga']."</td>
 </tr>
 ";
 $no++;
}
?>
<html>
<head>
<link rel="stylesheet" href="style.css">
<title>Fungsi Pagination</title>
</head>
<body>
  <center>
 <h3>Fungsi Pagination MySQL</h3>
 <table cellpadding="0" cellspacing="0">
 <tr>
  <th>#</th>
  <th>Nama</th>
  <th>Seri</th>
  <th>Produksi</th>
  <th>Harga</th>
 </tr>
 <?php echo $show; ?>
 </table>
 <div id="pagination">
  <?php echo pagination($sql, $limitData, $pages, 'index.php'); ?>
 </div>
 <center>
</body>
</html> 

File tersebut adalah untuk mem-view data dari database yang kita buat tadi, agar tampilannya lebih menarik kita akan tambahkan style css dengan nama file style.css.

body {
 font-family: "calibri";
}
table th {
 background: #333;
 padding: 10px;
 color: #fff;
 border: none;
}
table tr:nth-child(even) {
 background: #efefef;
}
table tr:nth-child(odd) {
 background: #d5d5d5;
}
table tr:hover {
 background: #0da3d5;
 color: #fff;
}
table td {
 padding: 7px 5px;
 border: none;
}
#pagination {
 margin: 10px 0;
}
#pagination a {
 text-decoration: none;
 padding: 0 6px;
 margin: 0 1px;
 transition: all 0.3s;
 border-bottom: 1px solid #aaa;
}
#pagination a.disabled {
 color: #fff;
 background: #0da3d5;
 border-radius: 25px;
 transition: all 0.3s;
}
#pagination a.next, #pagination a.prev {
 color: #aaa;
 border-bottom: none;
 transition: all 0.3s;
}
#pagination a:hover {
 color: #aaa;
 transition: all 0.3s;
}
#pagination a.disabled:hover {
 color: #fff;
 transition: all 0.3s;
}
#pagination a.next:hover, #pagination a.prev:hover {
 color: #0da3d5;
 border-bottom: none;
 transition: all 0.3s;
}
Setelah selesai mempercantik tampilan sekarang kita akan mulai membuat function pagination-nya dengan nama file pagination.php.

 <?php

/*
:: Fungsi untuk membuat pagination
:: Credit by Asep Sholihin
*/

function pagination($sql, $limitData, $paging, $url)
{
    $showPage = "";

    $query = mysql_query("select count(*) as jumlah_data from (". $sql .") a");
    $data = mysql_fetch_array($query);
    $jumData = $data['jumlah_data'];

    if($limitData==1){
        $limitData=$jumData;
    }

    $jumPage = ceil($jumData / $limitData);

    if ($paging > 1) echo "<a class=\"prev\" href=\"".$url."?p=".($paging - 1)."\">&laquo;</a>";

    for ($page = 1; $page <= $jumPage; $page++)
    {
        if ((($page >= $paging - 3) && ($page <= $paging + 3)) || ($page == 1) || ($page == $jumPage))
        {
            if (($showPage == 1) && ($page != 2)) echo "<a>...</a>";
            if (($showPage != ($jumPage - 1)) && ($page == $jumPage)) echo "<a>...</a>";
            if ($page == $paging) echo "<a class=\"disabled\">".$page."</a>";
            else echo "<a href=\"".$url."?p=".$page."\">".$page."</a>";
   $showPage = $page;
        }
    }
    if ($paging < $jumPage) echo "<a class=\"next\" href=\"".$url."?p=".($paging+1)."\">&raquo;</a>";

}
?>

DEMO | Source

Sekarang coba buka file index.php dan taraaaaaaaa....
Oke, buat temen-temen, silahkan berkreasi, semoga tulisan ini bermanfaat, terimakasih.

0 komentar:

Post a Comment