Cara membuat Paging Di PHP - Menurut saya paging merupakan suatu implementasi untuk membagi jumlah data yang sangat besar menjadi beberapa bagian dan menampilkan datanya per halaman. Membuat paging di PHP tidaklah sulit. Fungsi dari paging itu sendiri adalah untuk mencegah load data terlalu besar dalam suatu database. Selain itu membuat kenyamanan dari sisi user, karena user tidak harus menscrool halaman hingga ratusan bahkan ribuan baris di setiap halaman.
Konsep Dasar Dalam Membuat Paging
Tentu yang diperlukan pertama adalah menampilkan data dari database dengan perintah select atau read, sesuai dengan yang sudah dipelajari pada tutorial CRUD
SELECT * FROM nama_tableQuery diatas akan menampilkan semua data dalam suatu tabel.
Untuk membatasi jumlah data yang akan ditampilkan maka query yang di atas bisa di modifikasi sedikit dengan menambahkan limit offset, jumlah_data, sehingga menjadi berikut
SELECT * FROM nama_table limit 0, 10
- offset merupakan berapa data yang harus dilewati, sehingga jika kita menentukan offsetnya sebagai 0 maka data dimulai dari baris yang pertama. Jika nilai offset kita tentukan sebagai 5, maka data dimulai dari baris ke 6.
- jumlah_data merupakan nilai atau berapa jumlah yang akan ditampilkan.
Coba perhatikan lagi query yang diatas, limit 0, 10 berarti menampilkan data sebanyak 10 baris yang dimulai dari baris pertama. Jika ingin menampilkan data sebanyak 5 baris dari baris ke 3, maka querynya limit 2, 5.
Untuk membuat paging, maka kita harus mengetahui lebih dulu jumlah total data yang ada. Berikut query untuk mencari jumlah total dari data
SELECT COUNT (*) jumlahData from nama_table
Setelah mengetahui jumlah total data, kemudia kita bisa bagi dengan jumlah data perhalaman yang akan ditampilkan, dimana pembagian ini akan dibulatkan ke atas dengan fungsi ceil di PHP. coba perhatikan query berikut
$jumlahPage = ceil($jumlahData/$dataPerPage)
Setelah mengetahui sedikit konsep dalam membuat paging, mari kita implementasikan secara langsung. Disini akan saya skenariokan kita akan menampilkan data member. Dimana data tersebut berjumlah 10 data dan akan ditampilkan 3 data per halaman.
Pertama-tama silahkan buat tabel untuk menyimpan data member
CREATE TABLE member (
idmember int (11) NOT NULL AUTO_INCREMENT,
namamember varchar (30) NOT NULL,
alamatmember varchar(50) NOT NULL,
nohape varchar(12) NOT NULL,
PRIMARY KEY(idmember)
)
Kemudian insertkan beberapa data ke dalam tabel tersebut
INSERT INTO member (namamember, alamatmember, nohape) VALUES ('adi', 'nusa','087861234567');
INSERT INTO member (namamember, alamatmember, nohape) VALUES ('anika', 'penida','087861234567');
INSERT INTO member (namamember, alamatmember, nohape) VALUES ('ucok', 'klungkung','087861234567');
INSERT INTO member (namamember, alamatmember, nohape) VALUES ('yoga', 'besang','087861234567');
INSERT INTO member (namamember, alamatmember, nohape) VALUES ('ongek', 'dawan','087861234567');
INSERT INTO member (namamember, alamatmember, nohape) VALUES ('kongok', 'gianyar','087861234567');
INSERT INTO member (namamember, alamatmember, nohape) VALUES ('cuncay', 'tembawu','087861234567');
INSERT INTO member (namamember, alamatmember, nohape) VALUES ('alit', 'tonja','087861234567');
INSERT INTO member (namamember, alamatmember, nohape) VALUES ('darlan', 'surabi','087861234567');
INSERT INTO member (namamember, alamatmember, nohape) VALUES ('ongih', 'anyelir','087861234567');
Selanjutnya buat sebuah file PHP untuk menampilkan data sekaligus paging tersebut
index.php<?php
//Koneksikan ke database
mysql_connect("localhost", "root", "");
mysql_select_db("tutorial");
//Tampilkan Jumlah data
$query = mysql_query("SELECT COUNT(*) jumData from member");
$data = mysql_fetch_array($query);
$jumlahData = $data["jumData"];
//Tentukan Jumlah Data Per Halaman
$dataperPage = 3;
//Buat kondisi saat request halaman
if(isset($_GET['page']))
{
$noPage= $_GET['page'];
}
else
{
$noPage=1;
}
//Tentukan Awal dari data yang akan ditampilkan
$offset = ($noPage-1)*$dataperPage;
//Buat Tabel untuk menampilkan data
?>
<table width="75%" border="1" cellspacing="0" cellpadding="3">
<tr>
<th colspan="4" bgcolor="#CCFF66" width="50%" height="40" align="center" style="font-family:Georgia, 'Times New Roman', Times, serif;">MEMBER</th>
</tr>
<tr>
<th width="5%" height="20" bgcolor="#0066FF" align="center">No</th>
<th width="25%" height="20" bgcolor="#0066FF" align="center">Nama</th>
<th width="30%" height="20" bgcolor="#0066FF" align="center">Alamat</th>
<th width="15%" height="20" bgcolor="#0066FF" align="center">Handphone</th>
</tr>
<?php
//Tampilkan Data ke kolom tabel dengan perulangan
$lihatmember = mysql_query("select * from member order by idmember DESC limit $offset, $dataperPage");
while($member = mysql_fetch_array($lihatmember))
{
?>
<tr>
<td><?php echo $offset=$offset+1; ?></td>
<td><?php echo $member['namamember']; ?></td>
<td><?php echo $member['alamatmember']; ?></td>
<td><?php echo $member['nohape']; ?></td>
</tr>
<?php
}
?>
</table>
<?php
//Mencari dan menampilkan Jumlah Halaman
$jumPage=ceil($jumlahData/$dataperPage);
if($noPage > 1)
{
echo "<a href='".$_SERVER['PHP_SELF']."?page=".($noPage-1)."'>«</a>";
}
for($page = 1; $page <= $jumPage; $page++)
{
$showPage = 0;
if ((($page >= $noPage - 3) && ($page <= $noPage + 3)) || ($page == 1) || ($page == $jumPage))
{
if (($showPage == 1) && ($page != 2)) {
echo " ... ";
}
if (($showPage != ($jumPage - 1)) && ($page == $jumPage)) {
echo " ... ";
}
if ($page == $noPage){
echo " <b>".$page."</b>";
}
else {
echo " <a href='".$_SERVER['PHP_SELF']."?page=".$page."'>".$page."</a> ";;
}
$showPage=$page;
}
}
if ($noPage < $jumPage) {
echo "<a href='".$_SERVER['PHP_SELF']."?page=".($noPage+1)."'>»</a>";
}
?>
Sekarang silahkan buka halaman index.php tersebut, maka tampilannya akan seperti berikut:
![]() |
| Tampilan Index Paging |
![]() |
| Tampilan Paging Pada Page 2 |
Bagaimana, apakah sudah paham cara membuat paging di PHP? Silahkan kalian modifikasi script diatas sehingga menghasilkan paging yang sesuai dengan keinginan kalian. Jika ada yang ditanyakan, silahkan tuangkan dalam komentar :)
Contoh modifikasi paging dengan menggunakan style bootstrap.



makasih banyak mas atas ilmunya :)
ReplyDeleteSama-sama gan.. semoga bermanfaat :D
Deleteitu maksudnya jumData pada syntax ini apa ya ? pdhal di field table mysql tidak ada nama itu
ReplyDelete$query = mysql_query("SELECT COUNT(*) jumData from member");
Saya mulai dari COUNT dulu, COUNT itu adalah perintah untuk menghitung jumlah data (row) yang ada di dalam table (dalam kasus ini table member). Kemudian jumData itu adalah field yang akan digunakn untuk menyimpan hasil penghitungan jumlah data. Jadi jumData itu bisa agan ganti sesuka agan sendiri, asalkan nanti saat agan ingin menampilkan jumlah data, agan gunakan field yang sudah agan gunakan disana...
DeleteContoh:
$query = mysql_query("SELECT COUNT(*) terserahAgan from member");
echo $terserahAgan ;
test
ReplyDeletepermisi, maut tanya.
ReplyDeletekalo utk halaman 2 yg blm ada data.y/data msh hanya pd halaman pertama. gimana cara.t biar bs di redirect ke halaman 404 waktu di klik pd halaman yg msh belum ada data.y?
makasih tutorial.y.
Jika memang datanya hanya ada pada halaman 1.. maka pagging untuk halaman 2 sudah pasti tidak ada gan... Jadi nomer pagingnya hanya sebatas sampai no 1.. :D
Delete