Menampilkan data dalam jumlah banyak dalam satu halaman bukanlah pilihan yang baik. Selain
membuat load database menjadi besar, dari sisi user juga tentu tidak nyaman untuk selalu menscroll halaman hingga ratusan bahkan ribuan baris data. Untuk itu diperlukan pemecahan data
menjadi beberapa halaman dengan jumlah data yang terbatas setiap halamannya (misalkan 20
50 data per halaman).
Membuat paging dengan PHP tidaklah sulit. Silahkan ikuti tutorial berikut ini.
Materi Dasar
Tentu kalian sudah tahu bahwa untuk menampilkan data dari database adalah dengan query
SELECT * FROM nama_tabel. Query tersebut akan menampilkan seluruh data dari tabel.
Untuk membatasi jumlah data yang ditampilkan, tambahkan perintah LIMIT offset, row_count
sehingga untuk menampilkan data sebanyak 50 row, query menjadi seperti berikut.
adalah berapa banyak data yang akan dilewati (skip). Jika offset 0, maka data
ditampilkan dari baris pertama. Jika offset 10, maka data ditampilkan dari baris ke-11.
row_count adalah jumlah data yang akan ditampilkan.
offset
Perhatikan lagi query diatas, LIMIT 0, 50 berarti menampilkan data sebanyak 50 baris dari
baris pertama. Jika ingin menampilkan data sebanyak 50 data dimulai dari baris ke 51, maka
query nya adalah LIMIT 50, 50.
Dengan membuat kedua fungsi ini, kita akan dapat dengan mudah menampilkan tombol paginasi
dan data dari tabel tanpa harus menulis ulang kode setiap kali diperlukan.
Fungsi getTableData()
Buat file baru. Ketikkan kode berikut dan simpan dengan nama pagination.php.
Fungsi showPagination()
Tambahkan kode berikut pada file pagination.php.
8
9
10
11
12
13
14
15
16
17
18 }
$page = 1;
while ($page <= $totalPage)
{
echo '<a href="?page='.$page.'&perPage='.$limit.'">'.$page.'</a>';
if ($page < $totalPage)
echo " | ";
$page++;
}
Untuk bisa membuat paging, maka kita harus mengetahui jumlah total data yang ada terlebih
dahulu, kemudian total data tersebut dibagi dengan jumlah data yang ditampilkan dalam satu
halaman. Dengan demikian, kita mendapatkan jumlah paging yang dapat dibuat. Perhatikan
variabel $totalPage.
Jika kita memiliki data sebanyak 13 baris dan akan ditampilkan sebanyak 5 data per halaman,
maka paging yang dibuat adalah 3, sehingga data pada baris ke 11, 12, dan 13 dapat
ditampilkan. Untuk memenuhi kebutuhan ini, maka digunakan fungsi ceil() untuk
membulatkan pembagian ke atas karena 13 jika dibagi 3 tidaklah bulat 3 dan juga bukan 4.
Setelah jumlah total paging yang akan dibuat diketahui, sekarang kita tinggal membuat tombol
sebanyak jumlah halaman (total paging) yang didapat dengan menggunakan pengulangan while
($page <= $totalPage).
Menampilkan Data
Sekarang kita sudah memiliki dua fungsi untuk menampilkan data dan untuk membuat tombol
paginasi. Sekarang kita gunakan kedua fungsi tersebut.
Buat file baru dan simpan dengan nama data.php. Kemudian buatlah koneksi ke database.
Silahkan gunakan database apa saja yang pernah dibuat, yang penting ada tabel yang memiliki
data yang cukup untuk contoh (misal memiliki lebih dari 20 baris data).
1
2
3
4
5
6
<?php
mysql_connect('localhost', 'root', '');
mysql_select_db('test');
include_once('pagination.php');
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Penjelasan dapat dibaca pada baris-baris komentar kode di atas. Silahkan dipahami.
Kesimpulan
Membuat paginasi tidaklah sulit. Dengan membuat paginasi menjadi fungsi, kita dapat dengan
mudah menggunakan fitur paginasi tanpa harus menuliskan kode yang sama berulang kali pada
halaman-halaman yang membutuhkan.
Selamat belajar.
Assalamualaikum...
Wah, sudah lama sekali saya tidak posting diblog ini, mungkin ini kesempatan saya untuk bisa
berbagi sedikit ilmu yang saya punya. ok langsung ke TKP kaya OVJ aja he...
Pertama saya akan sedikit jelaskan tentang teknik paging halaman, dalam hal menampilkan
sebuah data dari database banyak yang menggunakan table dan cara ini pun akan memakai table,
yang jadi masalah bagaimana jika data yang akan ditampilkan berjumlah ratusan bahkan ribuan
(what..!) ? , nah dengan membuat paging data yang akan ditampilkan akan dibagi-bagi per
halaman seperti <<Prev 1,2,3,4...11,12,13 Next>> dst. sebelum ke pembahasan saya asumsikan
anda sudah tau cara perulangan dan menampilkan data di tabel. ok kita bahas sedikit-sedit.
Sebagai contoh kita buat tabel product
CREATE TABLE product (
id int(11) auto_increment,
nama_produk varchar(20),
harga varchar(20),
stok date,
PRIMARY KEY (id)
)
Tentukan berapa data yang akan ditampilkan perhalaman
// jumlah data yang akan ditampilkan per halaman (6 data)
$dataPerPage = 6;
Perhitungan offsite
// perhitungan offset
artinya variabel $offset menampung nilai = 1-1 * 6 = 6, berarti data yang akan ditampilkan per
halaman adalah 6
$query
= "SELECT COUNT(*) AS jumData FROM product ";
$hasil = mysql_query($query);
$data
= mysql_fetch_array($hasil);
$jumData = $data['jumData'];
// menentukan jumlah halaman yang muncul berdasarkan jumlah semua data
$jumPage = ceil($jumData/$dataPerPage);
// menampilkan link previous
if ($noPage > 1) echo "<a
1)."'><< Prev</a>";
href='".$_SERVER['PHP_SELF']."?paging=".($noPage-
Selanjutnya coba kita terapkan dengan menggunakan tabel sekaligus menapilkan data dari
database, berikut source full nya:
<table width="100%" border="0" align="center">
<tr>
<td colspan="4"> DAFTAR PRODUK</td>
</tr>
<?
include_once "koneksi.php";
//koneksi ke database
<td><php
<td><php
<td><php
<td><php
</tr>
<?
echo
echo
echo
echo
$row[0];
$row[1];
$row[2];
$row[3];
?></td>
?></td>
?></td>
?></td>
}
?>
<tr>
<td colspan="4" align="center">
<?
$query
$hasil
$data
$jumData = $data['jumData'];
// menentukan jumlah halaman yang muncul berdasarkan jumlah semua data
$jumPage = ceil($jumData/$dataPerPage);
// menampilkan link previous
if ($noPage > 1) echo "<a
1)."'><< Prev</a>";
href='".$_SERVER['PHP_SELF']."?paging=".($noPage-
</td>
</tr>
</table>
Selesai, dan tunggu artikel selanjutnya kita akan coba buat advance paging yaitu dengan sedikit
menambahkan CSS
Wassalam
if ($koneksi) {
$koneksiDB = mysql_select_db($db);
if (!$koneksiDB) {
echo "Tidak dapat terhubung ke database";
}
} else {
echo "Tidak dapat terhubung ke MySQL";
}
?>
Koneksi.php berguna untuk menghubungkan database dengan web
4. buat script dibawah ini dan simpan index.php
<?
include "koneksi.php";
$sql = "SELECT * FROM artikel";
$query = mysql_query($sql);
while ($hasil=mysql_fetch_array($query)){
$potong = explode ('<!--more-->', $hasil ['isi']);
echo"<h1>$hasil[judul]</h1><br>";
echo"<i>Diposting pada tanggal : $hasil[tanggal]<br><br></i>";
echo $potong [0].". . .<a href='artikel.php?id=$hasil[0]'>Read
More</a><hr><p>";
}
?>
berikut contoh readmore yang sudah jadi
<!DOCTYPE html>
<html>
<head>
<style>
div.ex {
width: 220px;
padding: 10px;
border: 5px solid gray;
margin: 5px;
}
</style>
</head>
<body>
<img src="w3css.gif" width="250" height="250">
<div class="ex">The picture above is 250px wide. The total width of this element is also
250px.</div>
</body>
</html>
border-style values:
<!DOCTYPE html>
<html>
<head>
<style>
p.none {border-style: none;}
p.dotted {border-style: dotted;}
p.dashed {border-style: dashed;}
</body>
</html>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<style>
#customers {
#customers th {
font-size: 1.1em;
text-align: left;
padding-top: 5px;
padding-bottom: 4px;
background-color: #A7C942;
color: #ffffff;
}
#customers tr.alt td {
color: #000000;
background-color: #EAF2D3;
}
</style>
</head>
<body>
<table id="customers">
<tr>
<th>Company</th>
<th>Contact</th>
<th>Country</th>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>Maria Anders</td>
<td>Germany</td>
</tr>
<tr class="alt">
<td>Berglunds snabbkp</td>
<td>Christina Berglund</td>
<td>Sweden</td>
</tr>
<tr>
<td>Centro comercial Moctezuma</td>
<td>Francisco Chang</td>
<td>Mexico</td>
</tr>
<tr class="alt">
<td>Ernst Handel</td>
<td>Roland Mendel</td>
<td>Austria</td>
</tr>
<tr>
<td>Island Trading</td>
<td>Helen Bennett</td>
<td>UK</td>
</tr>
<tr class="alt">
<td>Kniglich Essen</td>
<td>Philip Cramer</td>
<td>Germany</td>
</tr>
<tr>
<td>Laughing Bacchus Winecellars</td>
<td>Yoshi Tannamuri</td>
<td>Canada</td>
</tr>
<tr class="alt">
<td>Magazzini Alimentari Riuniti</td>
<td>Giovanni Rovelli</td>
<td>Italy</td>
</tr>
<tr>
<td>North/South</td>
<td>Simon Crowther</td>
<td>UK</td>
</tr>
<tr class="alt">
<td>Paris spcialits</td>
<td>Marie Bertrand</td>
<td>France</td>
</tr>
</table>
</body>
</html>
Membuat PAGE 1 2 3
<-Previous 1 2 3 Next->
Halaman tersebut contentnya di ambil dari database MySql, selain itu kita juga bisa menentukan
berapa item yang akan kita tampilkan per-halaman. Menarik bukan???
Koneksi db.php:
<?php
$dbhost = localhost;
$dbusername = user_kamu;
$dbpasswd = pass_kamu;
$database_name = database_kamu;
#under here, dont touch!
@$connection = mysql_pconnect($dbhost,$dbusername,$dbpasswd) or die
(MySql Putus tidak bisa connect ke server);
@$db = mysql_select_db($database_name, $connection) or die(Database tidak ditemukan);
?>
Deskripsi Script:
<?php
/* ini kita include koneksi database */
include db.php;
/* tentukan table nya */
$table = content;
$hal = $_GET[hal];
/* jika page default nya 1 */
if(!isset($_GET['hal'])){
??? $page = 1;
} else {
??? $page = $_GET['hal'];
}
/* tentukan jumlah item per halaman */
$max_results = 5;
/* halaman di kali MAX jumlah item per halaman dikurangi MAX jumlah item per halaman */
/* logika: 1 x 5 = 5? ,? 5 5 = 0?? , jadi id database dimulai dari 0*/
$from = (($page * $max_results) $max_results);?
/* tampilkan dari databse, LIMIT dari contuh diatas id dari 0 sampai 5 */
$sql = mysql_query(SELECT * FROM $table ORDER BY id DESC LIMIT $from,
$max_results );
while($row = mysql_fetch_array($sql)){
/* display result, ini tergantung table database mu */
?>
<?php echo $row[2] ?><br>
<?php echo $row[3] ?></a><br />
<?php echo $row[1] ?> | Halaman Ini dibaca <?php echo $row[6] ?> kali<br />
<?php echo $row[4]; ?>
<hr>
<?php
}
$total_results = mysql_result(mysql_query(SELECT COUNT(*) as Num FROM
$table),0);
$total_pages = ceil($total_results / $max_results);
/* bangun jumlah hiperlink halaman*/
echo <center>Select a Page<br />;
/* bangun Previous link */
if($hal > 1){
??? $prev = ($page 1);
??? echo <a href=$_SERVER[PHP_SELF]?hal=$prev> <-Previous </a> ;
}
for($i = 1; $i <= $total_pages; $i++){
??? if(($hal) == $i){
??????? echo $i ;
??????? } else {
??????????? echo <a href=$_SERVER[PHP_SELF]?hal=$i>$i</a> ;
??? }
}
/* bangun Next link */
if($hal < $total_pages){
??? $next = ($page + 1);
??? echo <a href=$_SERVER[PHP_SELF]?hal=$next>Next-></a>;
}
echo </center>;
?>
Referensi luar negri
Saya modifikasi supaya mudah di gunakan dan di implementasikan oleh teman-teman semua
Script ini telah di test dan jalan 100% di:
- mesin pentium III 650Mhz
- ram 256mb
- server konsol server XAMPP versi 1.5.3 Beta 5