Ide Membuat Advanced Paging dengan PHP
April 30th, 2009 | by rosihanari |
Cetak Artikel Ini
Paging merupakan teknik menampilkan data dengan cara membaginya ke beberapa halaman. Teknik ini diberikan untuk mengurangi scrolling window apabila data yang disajikan terlalu banyak, sehingga akan menimbulkan kejemuan orang yang melihat dan juga akan menghasilkan page load time yang besar karena ukuran filenya besar (apabila data disajikan dalam satu halaman saja).
Untuk keperluan navigasi data biasanya disajikan dengan link berupa nomor halaman atau kadang berbentuk Previous dan Next.
Pada tutorial ini akan dipaparkan bagaimana ide membuat advance paging ini dilakukan. Advance paging adalah paging yang navigasinya berbentuk
1 2 3 4 … 20 Next >>
Contoh tampilan di atas diasumsikan terdapat 20 halaman paging dan halaman yang sedang aktif adalah halaman 1. Bila yang aktif halaman 10, maka tampilan navigasinya adalah:
<< Prev 1 ... 7 8 9 10 11 12 13 … 20 Next >>
Sedangkan bila yang aktif adalah halaman terakhir (20) maka tampilan navigasinya adalah
<< Prev 1 .. 17 18 19 20
Dalam contoh ini kasus advance paging ini akan diterapkan pada data guestbook atau buku tamu. Istilah ‘advance paging’ ini adalah istilah saya saja sih
Mau tau bagaimana ide dan cara membuatnya? simak baik-baik artikel ini. Artikel ini merupakan request dari mas Sadeli (salah satu member saya)
Pertama kita siapkan terlebih dahulu tabel untuk menyimpan datanya:
CREATE TABLE guestbook ( id int(11) auto_increment, nama varchar(20), email varchar(20), tanggal date, komentar text, PRIMARY KEY (id) )
Selanjutnya kita buat skenario dari paging ini. Misalkan kita akan membuat paging dengan jumlah data yang ditampilkan per halaman adalah sejumlah 5 buah. Sehingga kita perlu membuat variabel untuk menyimpan jumlah data yang akan ditampilkan per halaman.
show.php
<?php
// koneksi ke mysql
mysql_connect('namahost', 'dbuser', 'dbpassword');
mysql_select_db(data);
// jumlah data yang akan ditampilkan per halaman
$dataPerPage = 5;
.
.
.
?>
Kita lanjutkan skenarionya. Untuk script paging ini, bila dibuka pertama kali dengan URL http://namaserver/show.php maka otomatis menuju ke halaman 1. Untuk menuju ke halaman 2, maka URL nya http://namaserver/show.php?page=2. Sedangkan untuk menuju ke halaman 3, URL nya http://namaserver/show.php?page=3, dan seterusnya.
Dari skenario di atas tampak bahwa bila parameter ?page=... belum diberikan pada URL maka secara otomatis menuju ke nomor halaman 1. Sedangkan bila terdapat parameter ?page=… maka nomor halamannya menyesuaikan nilai pada parameter ?page tersebut. Untuk mewujudkan hal ini, maka kita tambahkan perintah
<?php
mysql_connect('namahost', 'dbuser', 'dbpassword');
mysql_select_db('dbname');
// jumlah data yang akan ditampilkan per halaman
$dataPerPage = 5;
// apabila $_GET['page'] sudah didefinisikan, gunakan nomor halaman tersebut,
// sedangkan apabila belum, nomor halamannya 1.
if(isset($_GET['page']))
{
$noPage = $_GET['page'];
}
else $noPage = 1;
.
.
?>
Selanjutnya, dalam teknik paging perlu adanya pengaturan posisi awal data atau lebih dikenal dengan istilah offset. Offset digunakan untuk mengatur posisi awal data yang akan ditampilkan perhalaman. Perlu Anda tahu, bahwa data dalam database memiliki urutan seperti halnya array. Data pada baris pertama hasil query SQL disebut data pada posisi ke-0, data pada baris kedua disebut data pada posisi ke-1, dst.
Trus.. apa kaitannya offset dengan paging? Sabar… perhatikan dulu contoh berikut ini
Sebagai contoh, misalkan terdapat 15 data dalam tabel guestbook dimana kita ingin menyajikan pada setiap halaman adalah 5 data. Dengan demikian total terdapat 3 halaman dalam pagingnya. Untuk halaman pertama, pastilah data yang ditampilkan adalah data ke – 0, 1, 2, 3 dan 4. Sedangkan halaman kedua, data yang ditampilkan adalah 5, 6, 7, 8, dan 9. Serta halaman ketiga, data ke 10, 11, 12, 13, 14.
Nah… perhatikan bahwa untuk halaman 1, data awal yang ditampilkan adalah data pada urutan ke-0, halaman 2 data awalnya adalah data pada urutan ke-5 dan halaman 3 data pada urutan ke 10.
Lantas apa gunanya offset tersebut? Offset nantinya akan digunakan pada query SQL untuk memunculkan data pada setiap halaman. Query SQL yang digunakan adalah
SELECT * FROM guestbook LIMIT offset, jumlahData;
Sehingga untuk memunculkan data guestbook pada halaman pertama, maka perintahnya
SELECT * FROM guestbook LIMIT 0, 5;
Untuk memunculkan data pada halaman kedua, perintahnya:
SELECT * FROM guestbook LIMIT 5, 5;
dan untuk memunculkan data pada halaman ketiga, perintahnya:
SELECT * FROM guestbook LIMIT 10, 5;
dan seterusnya.
OK.. deh.. dah paham, trus yang jadi masalah adalah bagaimana menentukan offset pada setiap halamannya? Bila kita lihat patternnya, maka hubungan antara offset, jumlah data yang ingin ditampilkan per halaman dan nomor halamannya adalah:
offset = (no halaman – 1) * jumlah data per halaman;
Lho kok bisa? he.. 3x kita cek saja. Untuk halaman 1, maka nilai offset = (1 – 1) * 5 = 0. Untuk halaman 2, nilai $offset = (2 – 1) * 5 = 5 dan halaman ketiga $offset = (3 – 1) * 5 = 10. Bener kan?
OK.. deh, dah paham tentang offset, so.. kita bisa tambahkan scriptnya untuk mencari offset dan query SQL nya.
<?php
mysql_connect('namahost', 'dbuser', 'dbpassword');
mysql_select_db('dbname');
// jumlah data yang akan ditampilkan per halaman
$dataPerPage = 5;
// apabila $_GET['page'] sudah didefinisikan, gunakan nomor halaman tersebut,
// sedangkan apabila belum, nomor halamannya 1.
if(isset($_GET['page']))
{
$noPage = $_GET['page'];
}
else $noPage = 1;
// perhitungan offset
$offset = ($noPage - 1) * $dataPerPage;
// query SQL untuk menampilkan data perhalaman sesuai offset
$query = "SELECT * FROM guestbook LIMIT $offset, $dataPerPage";
$result = mysql_query($query) or die('Error');
// menampilkan data
echo "<table border='1'>";
echo "<tr><td>Nama</td><td>Email</td><td>Tanggal</td><td>Komentar</td></tr>";
while($data = mysql_fetch_array($result))
{
echo "<tr><td>".$data['nama']."</td><td>".$data['email']."</td><td>".$data['tanggal']."</td><td>".$data['komentar']."</td></tr>";
}
echo "</table>";
.
.
?>
Nah… masalah berikutnya adalah bagaimana menentukan total jumlah halamannya? Hal ini penting karena nantinya akan ditampilkan sebagai link navigasi pagingnya. Untuk menghitung total jumlah halaman, kita cari patternnya terlebih dahulu. Misalkan terdapat 15 data, dan kita ingin menyajikan data sejumlah 5 per halaman, maka total ada berapa halaman yang dibutuhkan? OK.. benar ada 3. Trus… kalo ada 31 data dan kita ingin menyajikan data sejumlah 5 per halaman, total ada berapa halaman? OK.. benar ada 7 (untuk halaman ke-7 hanya tampil 1 buah data). Sehingga dari pattern tersebut formula untuk menghitung jumlah halaman adalah
jumlah halaman = ceil(jumlah data / data per halaman);
ceil() adalah function yang digunakan untuk membulatkan ke atas suatu bilangan. Misal ceil(3.2) = 4, ceil(3.7) = 4.
Trus… yang jadi masalah adalah bagaimana mendapatkan jumlah datanya? Nah… untuk mendapatkan jumlah data keseluruhan yang ada kita gunakan query SQL.
SELECT COUNT(*) FROM guestbook;
OK… I know, dan sekarang kita bisa tambahkan proses menghitung jumlah data dan jumlah halaman pada scriptnya.
<?php
mysql_connect('namahost', 'dbuser', 'dbpassword');
mysql_select_db('dbname');
// jumlah data yang akan ditampilkan per halaman
$dataPerPage = 5;
// apabila $_GET['page'] sudah didefinisikan, gunakan nomor halaman tersebut,
// sedangkan apabila belum, nomor halamannya 1.
if(isset($_GET['page']))
{
$noPage = $_GET['page'];
}
else $noPage = 1;
// perhitungan offset
$offset = ($noPage - 1) * $dataPerPage;
// query SQL untuk menampilkan data perhalaman sesuai offset
$query = "SELECT * FROM guestbook LIMIT $offset, $dataPerPage";
$result = mysql_query($query);
// menampilkan data
echo "<table border='1'>";
echo "<tr><td>Nama</td><td>Email</td><td>Tanggal</td><td>Komentar</td></tr>";
while($data = mysql_fetch_array($result))
{
echo "<tr><td>".$data['nama']."</td><td>".$data['email']."</td><td>".$data['tanggal']."</td><td>".$data['komentar']."</td></tr>";
}
echo "</table>";
// mencari jumlah semua data dalam tabel guestbook
$query = "SELECT COUNT(*) AS jumData FROM guestbook";
$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);
.
.
?>
Nah… sekarang tinggal bagaimana cara memunculkan link berisi nomor halaman yang menuju ke setiap halamannya. Untuk memunculkan nomor halamannya, caranya mudah. Kita hanya menggunakan looping saja.
Tapi eit.. tunggu dulu pada desain advance paging di atas, sebelum memunculkan link nomor halaman, terdapat link << prev. Kapan link ini akan muncul? ya... tepat sekali yaitu ketika nomor halaman yang sedang aktif (sedang dibuka) setelah halaman pertama atau $noPage > 1. Trus.. menuju ke nomor halaman berapakah link tersebut? yap.. benar yaitu menuju ke nomor halaman sebelumnya ($noPage – 1).
Dengan demikian kita bisa tambahkan perintah berikut ini pada script
if ($noPage > 1) echo "<a href='".$_SERVER['PHP_SELF']."?page=".($noPage-1)."'><< Prev</a>";
sehingga menjadi
<?php
mysql_connect('namahost', 'dbuser', 'dbpassword');
mysql_select_db('dbname');
// jumlah data yang akan ditampilkan per halaman
$dataPerPage = 5;
// apabila $_GET['page'] sudah didefinisikan, gunakan nomor halaman tersebut,
// sedangkan apabila belum, nomor halamannya 1.
if(isset($_GET['page']))
{
$noPage = $_GET['page'];
}
else $noPage = 1;
// perhitungan offset
$offset = ($noPage - 1) * $dataPerPage;
// query SQL untuk menampilkan data perhalaman sesuai offset
$query = "SELECT * FROM guestbook LIMIT $offset, $dataPerPage";
$result = mysql_query($query) or die('Error');
// menampilkan data
echo "<table border='1'>";
echo "<tr><td>Nama</td><td>Email</td><td>Tanggal</td><td>Komentar</td></tr>";
while($data = mysql_fetch_array($result))
{
echo "<tr><td>".$data['nama']."</td><td>".$data['email']."</td><td>".$data['tanggal']."</td><td>".$data['komentar']."</td></tr>";
}
echo "</table>";
// mencari jumlah semua data dalam tabel guestbook
$query = "SELECT COUNT(*) AS jumData FROM guestbook";
$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 href='".$_SERVER['PHP_SELF']."?page=".($noPage-1)."'><< Prev</a>";
.
.
?>
Berikutnya kita akan tampilkan link nomor-nomor halamannya menggunakan looping. Adapun perintah-perintahnya adalah seperti di bawah ini.
for($page = 1; $page <= $jumPage; $page++)
{
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;
}
}
Konsep loopingnya sederhana, yaitu menuliskan link nomor halaman mulai dari 1 s/d jumlah halamannya. Namun harap dicatat di sini bahwa karena tidak semua nomor halaman ditampilkan sesuai desain sebelumnya maka kita perlu berikan syarat.
Maksud dari syarat
if ((($page >= $noPage - 3) && ($page <= $noPage + 3)) || ($page == 1) || ($page == $jumPage))
{
.
.
}
adalah hanya memunculkan link nomor halaman 1 dan juga halaman terakhir, sekaligus pula nomor-nomor halaman dalam rentang 3 halaman sebelum dan sesudah nomor halaman yang aktif. Contoh jika halaman yang aktif adalah halaman 7 dari 15 halaman, maka nanti diharapkan nomor halaman yang muncul adalah
1 4 5 6 7 8 9 10 15
Anda dapat mengubah rentang halaman sesuai yang diinginkan.
Perintah
if (($showPage == 1) && ($page != 2)) echo "...";
Digunakan untuk memunculkan tanda ‘…’ di antara halaman nomor 1 dengan halaman berikutnya yang tampil. Tapi perlu diingat bahwa tanda ini akan muncul bila nomor halaman yang muncul setelah 1 ialah bukan 2. Apabila setelah 1 ini muncul 2, maka tanda ini tidak muncul.
Demikian pula untuk perintah
if (($showPage != ($jumPage - 1)) && ($page == $jumPage)) echo "...";
Perintah di atas digunakan untuk memunculkan tanda ‘…’ sebelum nomor halaman terakhir bila halaman sebelumnya yang muncul bukan ‘nomor halaman terakhir – 1′.
Sehingga dari kedua perintah di atas diharapkan akan menampilkan nomor halaman seperti di bawah ini
1 … 4 5 6 7 8 9 10 … 15 (bila yang aktif adalah halaman 7)
1 2 3 4 5 6… 15 (bila yang aktif adalah halaman 2)
1 … 10 11 12 13 14 15 (bila yang aktif adalah halaman 13)
Sedangkan perintah
if ($page == $noPage) echo " <b>".$page."</b> ";
else echo " <a href='".$_SERVER['PHP_SELF']."?page=".$page."'>".$page."</a> ";
digunakan untuk menampilkan link nomor halaman. Namun link dari nomor halaman ini ditampilkan hanya pada nomor halaman yang sedang tidak aktif. Sedangkan pada nomor halaman yang sedang aktif nomor halaman hanya dicetak tebal saja untuk menunjukkan bahwa halaman yang sedang aktif adalah halaman tersebut.
Terakhir.. kita perlu link untuk memunculkan next >>. OK kapan link ini muncul? ya benar… yaitu ketika halaman yang sedang aktif bukanlah pada halaman terakhir atau sebelum halaman terakhir. Sehingga kita bisa tambahkan perintah
if ($noPage < $jumPage) echo "<a href='".$_SERVER['PHP_SELF']."?page=".($noPage+1)."'>Next >></a>";
pada script, sehingga scriptnya menjadi
<?php
mysql_connect('namahost', 'dbuser', 'dbpassword');
mysql_select_db('dbname');
// jumlah data yang akan ditampilkan per halaman
$dataPerPage = 5;
// apabila $_GET['page'] sudah didefinisikan, gunakan nomor halaman tersebut,
// sedangkan apabila belum, nomor halamannya 1.
if(isset($_GET['page']))
{
$noPage = $_GET['page'];
}
else $noPage = 1;
// perhitungan offset
$offset = ($noPage - 1) * $dataPerPage;
// query SQL untuk menampilkan data perhalaman sesuai offset
$query = "SELECT * FROM guestbook LIMIT $offset, $dataPerPage";
$result = mysql_query($query) or die('Error');
// menampilkan data
echo "<table border='1'>";
echo "<tr><td>Nama</td><td>Email</td><td>Tanggal</td><td>Komentar</td></tr>";
while($data = mysql_fetch_array($result))
{
echo "<tr><td>".$data['nama']."</td><td>".$data['email']."</td><td>".$data['tanggal']."</td><td>".$data['komentar']."</td></tr>";
}
echo "</table>";
// mencari jumlah semua data dalam tabel guestbook
$query = "SELECT COUNT(*) AS jumData FROM guestbook";
$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 href='".$_SERVER['PHP_SELF']."?page=".($noPage-1)."'><< Prev</a>";
// memunculkan nomor halaman dan linknya
for($page = 1; $page <= $jumPage; $page++)
{
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;
}
}
// menampilkan link next
if ($noPage < $jumPage) echo "<a href='".$_SERVER['PHP_SELF']."?page=".($noPage+1)."'>Next >></a>";
?>
Wah panjang juga ya artikelnya.. tapi gak papa deh, mudah-mudahan ada manfaatnya bagi Anda. Selamat mencoba dan berpaging ria
Jika Anda ingin mendownload scriptnya, silakan download di bawah ini
[ Download Script ]
Jangan lupa terus stay tune di blog ini karena pasti akan ada artikel-artikel menarik yang lain daripada yang lain seputar programming.
Anda ingin mendownload beberapa tool programming 100% gratis?
Silakan download di FREE PROGRAMMING TOOLS.
atau ingin berdonasi untuk pengembangan blog ini cukup dengan $1 via Paypal?
Beberapa artikel terkait
- Script PHP Menampilkan Hasil Pencarian Multikategori dengan Advanced Paging
- Membuat Nomor Urut Hasil Query di PHP (Combined with Paging)
- Teknik Membuat On Page Paging
- Membuat Nomor Halaman (Paging) di WordPress
- Ide Membuat Sistem Login Aplikasi Multi User
- Ide Membuat Generator Kode Unik Incremental Otomatis
- Ide Membuat Script Upload Download File Dengan Batasan Hak Akses
- Script PHP untuk Menampilkan Siswa Belum Bayar SPP (A Study Case)
- Teknik Debugging Script PHP + MySQL
- Script INSERT Data Dengan PHP dan MS. Access
Share this article on:
Kata kunci: paging - PHP - script -





pusing liat code banyak ….
to mashardi:
that’s for persons who love programming…
NICE ARTICLE
waduh jadi keduax neh…
penjelasan yang sangat mudah di pahami
pak guru…kapan neh mau buat atikel tentang shop shopan nya..di tunggu lhoh…
bingung saya…untuk pertanyaan kemaren sudah dak eror lagi…yang member…
sebab kalau pak guru buat tentang cart..wuih di jamin….
Makasih Pak Ari untuk tutorial pagingnya, penjelasannya sangat mudah dipahami untuk saya yang masih beginner banget untuk masalah PHP ini. Alhamdulillah, website saya jadi lebih mudah dimodifikasi sesuai dengan kebutuhan user, dengan adanya bantuan tutorial2 Pak Ari. Salam sukses selalu.
http://www.namaislami.com
to sadli: OK sama-sama mas… terimakasih juga telah menjadi member saya.
wah maksih bnyak pak tas tutorialnya,,,,
lumayan bantu buat ngejain tugas kuliah
thanks buat tutorial2 nya..
banyak membantu tugas2 ku,
btw, kalo mau ekstrak zip menggunakan php bagaimana ya..??
pak, mau tanya..
kenapa ketika di next yang muncul cuma 5 dataseperti di page 1..
g bisa untuk data yang selanjutnya..
makasih
ups…
ternyata kurang teliti aja..
nuhun ya pak, scriptnya sangat membantu..
thanks Sir…
Bismillah1
pk mau nanya kalo membatasi jumlah karakter yang tampil pada halaman web menggunakan php gimana ya pak? ana tunggu replay nya via email ya pak, penting banget buat ana…
jazakalloh
to indonesia_manusia: kriteria membatasinya dari karakter bagaimana? apakah n karakter dihitung mulai dari karakter paling depan? Untuk melakukan hal ini, anda bisa pakai substr(), misal $karakterTampil = substr($karakterAsli, 0, n);
Kalo dioracle??
to zymanq: konsepnya hampir sama mas. Paling yang beda hanya perintah2 untuk koneksi, menjalankan querynya dan membaca data hasil query. Kalau logikanya sama persis.
Huuuuaaaaa. . . . thanx banget . . .. ^_^
sangat sangat sangat menbantu. . ..
bahasa yang diberikan pun sangat mudah dimegerti. . . jadi bersa lagi diajarin ma guru private. ..
tugas saya terbantu,, makasi ya.,…
artikel yang lain, juga sangat membantu tugas saya. . .. thanx… . =)
maaf pak, setelah saya coba muncul error pada baris: $data = mysql_fetch_array($hasil);
pada potongan code berikut ini :
$query = “SELECT COUNT(*) AS jumData FROM guestbook”;
$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);
pesan yang muncul pada browsernya :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in …….
to anes: coba cek lagi dengan nama tabel yang Anda gunakan. Sama nggak penulisannya dengan ‘guestbook’, karena script di atas menggunakan nama tabel tsb.
saya coba page 1-2-3 punya mas tapi setiap pindah halaman larinya selalu ke index.php
to antho: coba cek lagi scriptnya mas, mungkin ada yang salah. Setiap script yang ada di situ pasti dijamin bisa jalan.
scriptx mau jalan mas! tapi klo saya klik page 2 atau 3, scriptx jalan tapi data di page 2 atau 3 buka halaman baru lagi, tidak tetap di dalam tabel yang kita sudah desain sebelumnya
waw…sangat2 membantu tutorial.nya… thax banget ka Ari.. eits,, ka apa Om nie..hohoho
terimakasih buanyakk..
to awaxp: OM aja deh wkwkwkwk….
muantaaab … setelah mencari – cari sekian lama akhirnya dapet juga scriptnya … kikikiki …
btw … thx bgt oom … ntar kalo ada kendala lagi saya pasti cari solusi disini lagi dech …
ak boleh minta tolong g???
saya mau membuat guestbook tapi dengan tampilan lain
contohnya seperti ini
[nama dari baris 1-40][nama dari baris 41-80][nama dari baris 81-120][nama dari baris 121-160]
trus dibawahnya ada page 1 2 3 4 5
kira2 membuat seperti itu gimana ya
Mas ,saya masih bingung dengan script diatas yang $_GET['page'];. terutama pada ‘page’ nya di dalam fungsi GET tersebut. itu ‘page’ itu diambil dari mana yah ?
to rizky nugroho: parameter ‘page’ itu diambil dari parameter link yang ada di dalam nomor halaman yang mau dituju. Link ini terletak di bagian bawah halaman paging. Misal kalo ingin menuju ke halaman 2 itu kan ada link
http://.../script.php?page=2dst..ok banget tutorialnya…makasi yah..:)
halo pak saya seorang pemula yang ingin belajar pemrograman php and dengan adanya tutorial ini saya sangat terbantu … tapi saya masihbelum bisa membuat halaman komentar atau kotak ngoceh ato shoutbox cara nya gimana pak … makasih maturnuwun
advance paging…
rasanya ini yang aq cari. matur nuwun pak. sugeng siyam.
Paging…..
Mungkin inilah yang saya cari2. Terima kasih Pak.
mintak tolong lagi ni mas..
gw punya query seperti ini
dan pada halaman reportnya (report.php) ada link seperti ini
Juni | Juli | Agustus | September | Oktober | Nopember | Desember
gw maunya begitu klik link “Juni” maka di query pada bagian between “$agustus” berubah jadi “$juni” dan begitu juga bila diklik bulan2 yang lain..
tapi actionnya semua pada file tersebut (report.php)
ngerti kan gan maksudnya…
gimana mas caranya..
nggak ngarti ni gw…
makasih ya mas bantuannya
$juni = “(’2009-05-21′) and (’2009-06-20′)”;
$juli = “(’2009-06-21′) and (’2009-07-20′)”;
$agustus = “(’2009-07-21′) and (’2009-08-20′)”;
$september = “(’2009-08-21′) and (’2009-09-20′)”;
$oktober = “(’2009-09-21′) and (’2009-10-20′)”;
$nopember = “(’2009-10-21′) and (’2009-11-20′)”;
$desember = “(’2009-11-21′) and (’2009-12-20′)”;
$sql = “select tgl as tgl,
afd1 as afd1,
afd2 as afd2,
afd3 as afd3,
afd4 as afd4,
afd5 as afd5,
afd1+afd2+afd3+afd4+afd5 as total,
user as pengirim
from produksi_bungara
where tgl between $agustus
group by tgl order by tgl asc”;
dan pada halaman reportnya (report.php) ada link seperti ini
Juni | Juli | Agustus | September | Oktober | Nopember | Desember
gw maunya begitu klik link “Juni” maka di query pada bagian between “$agustus” berubah jadi “$juni” dan begitu juga bila diklik bulan2 yang lain..
tapi actionnya semua pada file tersebut (report.php)
ngerti kan gan maksudnya…
gimana mas caranya..
nggak ngarti ni gw…
makasih ya mas bantuannya
to ichsan: ya mudah saja kan mas… caranya di masing-masing link bulan dikasih parameter misal untuk link JUNI linknya: report.php?bln=juni, dst… Lalu di scriptnya, nilai parameter ‘bln’ nya dibaca pake perintah $bulan = $_GET['bln']; Kemudian gunakan IF
if ($bulan == “juni”) $tanggal = “(’2009-05-21′) and (’2009-06-20′)”;
else if ($bulan == “juli”) $tanggal = “(’2009-06-21′) and (’2009-07-20′)”;
.
.
dst
Kemudian di bagian WHERE pada querynya menjadi “WHERE tgl BETWEEN $tanggal”. Beres dah…
mas saya mw coba koneksi pake oracle..
* muncul error :
Fatal error: Call to undefined function fetcharray() in C:\xampp\htdocs\ta\show.php on line 31
klo d oracle fetcharray apa ya mas ??
thanks.
to toshi: anda bisa pake oci_fetch_array() contohnya ada di http://us3.php.net/manual/en/function.oci-fetch-array.php
Thanks ya Om buat tutorialnya.. Suskes selalu
kalau mau bikin paging seperti indeed.com gimana ya caranya?
bagus banget tutorial-nya. plese keep posting update info more like this. n …else… great web
mas mau nanya dounk jadi kan saya punya database artikel gitu,nah paging yang buat semua data itu bisa tapi kalo paging yang buat searchnya gag bisa.. jadi misalnya saya mau search artikel yang depannya semuanya A.nah keluar ada 1 sampai 3 tapi ketika saya klik next atau 1,2 maka nanti akan keluar semua page yang ada(1-5)ini kenapa yah mas? kan saya pake yang buat search saia ubah jadi:
$news=mysql_query(“SELECT * FROM artikel WHERE title LIKE ‘%$search%’ LIMIT $offset2, $dataPerPage2″) or die (“cant get em”);
lalu saya di bagian bawahnya
$query2 = “SELECT COUNT(*) AS jumData2 FROM artikel WHERE title LIKE ‘%$search%’”;
itu saja yang saya ubah..yang laen sama kayak di artikel ini.bagaimana caranya yah mas?saia mase baru di php neh..jadi banyak yang bingung..makasih ya mas>:)
to nez: mestinya keyword yang telah dimasukkan tadi juga harus terbaca ketika menuju halaman navigasinya. Silakan baca artikel saya yang lain tentang “Menampilkan Hasil Pencarian Multikategori dengan Advanced Paging“.
Thanks bgt neh… berguna sekali…
Artikel-2 nya semua berbanfaat nech..Saya Menggunakan WP 2.8.4 dengan Themes atahualpa 4.4.4 dan saya coba aplikasikan ternyata Page 1 dst malah membaca Post page 1 dst…. Kebetulan Page yang saya edit saat ini adalah 546 bagaimana solsui nya kalau diterapkan pada WP.
Tks
to mazna: wah kalo script di atas, tidak serta merta bisa langsung diimplementasikan ke WP mas, karena di WP itu semua dalam bentuk modul-modul.
Sudah jalan pak, tapi saya mau tanya bila pada saat menampilkan data ingin ditambahkan link untuk menampilkan file.php lain bagaimana bentuk coding menampilkan data nya pak?
Sebelumnya terima kasih pak,
to toeplz: link menampilkan file lain gimana maksudnya ya?
thanx bgt y om buat pencerahannya……..uda lama stack gr2 bgnian……
stay rockin the world w/ PHP mas…
permisi pak. scriptnya jalan tp saya bingung waktu mao klik halaman kedua, datanya tdk muncul. cuma muncul 5 data pertama saja di halaman pertama. bisa tolong dibantu pak? terima kasih sebelumnya :”>
@kuma: itu pasti ada yang kurang mas, bisa jadi parameter nya hilang… coba cek lagi scriptnya.
terimakasih yah mas rosihanari…
artikelnya bermanfaat banget buat saya yang kebetulan lagi garap skripsi..
heheuuuu…
mohon doanya yak!!!
sukses buat semuanya!!!
bagus artikelnya
tp gimana mas buatnya biar berupa class
biar ga report buat paging tiap halaman
thanks
terima kasih artikelnya sangat membantu saya yang awam ttg php
terus berkarya mas, biar indonesia semakin maju.
@robert wijaya: siap.. laksanakan mas Robert
thanks untuk motivasinya.
maaf mas, mau tanya..
thanks b4…
saya kan coba2 bkn web yg pake ajax n ada pagingnya, saya pake source code yang ada di atas bwt paging nampilkan barang2. nah masalah muncul pas gabungin file paging itu ke index, pas aku klik nomer2 hal paging itu index nya ikut berubah, semuanya menuju ke halaman paging. jadi index nya ga tampil, kan aneh klo ada website pas kita ngeklik paging, halaman utamanya hilang n ke paging semuanya… sory ngrepoti mas. tlg y klo bisa dibantu…
@robert wijaya: kalau begitu jadikan script di atas sebagai bagian dari halaman index mas. ada tinggal include kan desain template dari halaman webnya ke dalam script tsb.
iy mas uda bisa, sory sy masi cupu bgt ttg php, ini saya lg bikin skripsi tp toko elektronik online, tp blajar php mulai dari nol, cari2 dr google terus di edit2.he5.. thanks bgt mas. semoga websitenya semakin maju.
@robert wijaya: OK deh mas… thanks do’anya.
kalo data basenya db2 gmana bos..
mas sory baru nyadar, klo pke include kan brarti ajaxnya ga jalan. sy pake ajax dari http://www.dhimasronggobramantyo.com/artikel/Belajar_Ajax,_pelajari_segala_sesuatu_tentang_Ajax_dari_mulai_dari_dasar_hingga_contoh_aplikasi_Ajax#bookmark sedangkan pagingnya sy pake pny mas.. tolong pencerahannya gimana cara gabunginnya supaya pas di next halaman utamanya masih tetep ada.. thanks
asslmkm.. mas, caranya paging kalo dengan database Oracle bagaimana? setahuku tidak bisa pake limit kyk di mysql. saya sudah hampir putus asa nih nyari di google.. ga ngerti2..
oya, kalo ada sekalian dengan contoh scriptnya.
tolong ya mas.. trimakasih sebelumnya..
asslmkm mas.. aq mo nanya dong.. gimana caranya paging apabila menggunakan database ORACLE. setahuku di ORACLE tidak mengenal limit. kalo ada sekalian contoh skrip nya ya.. trimakasih sebelumnya..
@azwar: gunakan ‘rownum’ mas, misalnya:
SELECT * FROM tabel WHERE rownum <= 20;
makasih mas atas infonya..
bisa nggak rownum di ORACLE tsb diterapkan pada advanced paging diatas. kalo berkenan sekalian dengan contohnya skripnya.. ^_^
Maturnuwun..
@azwar: bisa saja mas diterapkan.
Terimakasih tutorialnya Mas, sangat membantu bagi saya, sukses selalu buat Mas, Amin.
Thank buuuuuuaaanget mas, seneng bisa lihat orang yg berbagi ilmu dengan iklas, semoga tambah turus ilmu nya…. dan yg pasti saya kebagian juga, he he he…
@jadul: amin.. thanks atas harapannya..
makasih mas.. aq udah berhasil terapkan paging ini untuk database oracle.
tapi ada yg mo saya tanyakan mas, apakah benar link nomor2 halaman itu letaknya diatas tabel?
bagaimana memindahkan ke bawah tabel?
trimakasih sebelumnya..
@azwar: letaknya di bawah tuh mas… coba pindahkan saja smua perintah mulai dari menampilkan link previous sampai dengan terakhir.
Keren mass cara paggingnya,.
pagging yang di gabungin dengan JS gmn yag??
keren-keren infonya, mendetail banget,.,.
klo pagging yang digabungin dg JS gmn caranya ya??
Pak ari, saya sdh punya website yg terdiri dari bbrp menu, spt menu home, berita,buku tamu. Tapi menu buku tamu, menu berita blm dipaging halamannya. Saya sdh coba memodifikasi kode program paging tapi blm bisa, msh eror. Bgm memodifikasi kode paging tsb di index.php?
aaaarrrrgghhh……….
makasih,very very very very helpfull……….
makasih mas,masnya keren dan pintar,jadi pengen kayak masnya……
makasih mas……
kalo mau di tambahkan penomoran gimana?
misal:
No ———->Penomoran
Nama
Email
Tanggal
Komentar
kenapa scriptnya gak jalan? malah muncul error seperti ini:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘-20, 20′ at line 1
tabel dan fieldnya padahal sudah saya ganti, termasuk koneksi databasenya.
mohon pencerahannya…
wew..terimakasih tutorialnya…sangat2 membantu saya..hehehe.
salam hangat IGT PHP TEAM buat mas rosihanari.
Salam kenal Pak Ari.Pak memberikan CSS pada paging bagaimana..selalu nomor yang aktif tidak terkena style.pemberian id saya kasih di tag body (misal ; .mohon bantuannya pak kalo berkenan.
dan maturnuwun banget pak .
tutorialnya mantep pak, terimakasih banyak
keren daaah ini dari tadi yang saya cari makasih mas, sukses…
saya sudah mencoba, dan hasilnya bagus, bisa jalan. akan tetapi, ketika saya tambahkan aksi (hapus,edit) tidak bisa jalan. Kenapa ya pak?
@kafa: mungkin ada yang salah di query update dan hapusnya mas. Coba dicek lagi
Mas, kalo buat paging tapi ada sessionnya bisa ga y? Dan pada tabel tersebut lalu saya kasih pencarian data gitu.
huhuhu…. saya bukan mas pak…
saya ini cewek masih single lagi. huhu…
ya coba saya cek lagi. makasih ya pak..
Masih akfif kan blognya pak? Mau minta pencerahannya hehe..
Saya pake textfield yg di input tanggal(java script).. maksudnya, saya pengen nampilin berdasarkan inputan tanggal itu.. Pada data pertama muncul, waktu di next ilang (pdhal masih ada data) dan di prev juga data yg muncul pertama juga ilang..
Mohon pencerahanny pak.. Terimakasih..
NAnya donk. kalo misalnya di tabel tersebut ada kolom nomor, yang bila di page 1 berarti nomornya 1-5, page 2 nomornya 6-10, dst bagaimana caranya? ada ide? looping di dalam looping itu bagaimana ya? thx,
@heri setiawan: itu bisa diperoleh dengan increment mas, tapi nilai awalnya menyesuaikan nomor halamannya. Coba kaitkan nilai awal nomo urutrnya dengan nomor halamannya, jika untuk setiap halaman isinya ada 5 data. Misal jumlah data per halaman adalah n, yaitu n = 5. Misal nomor halaman adalah p, maka nomor awal urutannya kan -> 5 (p-1) + 1. Coba kita cek, untuk halaman ke-1, maka nomor awal urutnya adalah: 5 (1-1) + 1 = 1. Bener kan? Untuk halaman ke-2, maka nomor awal urutnya adalah: 5(2-1) + 1 = 6. Bener kan? Nah.. setelah ketemu nomor awal urutnya, tinggal anda berikan increment saja.
@kafa: maaf mbak… soalnya id nya gak jelas co or ce, so.. saya pilih co aja
@jawa: coba tanggal nya disimpan di session saja mas. Coba baca artikel ttg session dan contoh cara penggunaannya di http://blog.rosihanari.net/apa-sih-gunanya-session-di-php
@el hilal: tentu saja bisa mas…
Mas, untuk paging halamannya sudah ga mslh.
tp utk nampilin data yang berurut ke bawah gmn?
cth:
data=100; perpage=20;
page1=100-81; page2=80-61; page3=60-41 dst..
saya msh bingung ngatur Ofset-nya…
mohon bntuannya
terima kasih…
Pak saya ada usul, gimana kalau paging komentar diblog ini dibuat advanced pagingnya, biar navigasi komentarnya lebih enak…
@yan: makasih usulannya mas. Namun.. di blog ini saya pagingnya pake plugin, jadi kalo mo ngubah scriptnya harus utak-atik script pluginnya.
sangat membantu sekali gan artikelnya!!
sebelum lam knal ya bang….
bang itu kan contohnya guestbok,,ada contoh yang menampilkan postingan artikel ngga,dmana artikel yg ditampilkan hanya cuplikannya saja(readmore)+paging
@boim: tunggu ya bang… sabar…
ok deh bang….ta tunggu
kalo menampilkan paging pada searching caranya gimana pak?
Pas udah di halaman 2, pagingnya gak mau jalan…
Terima kasih…
@gedelumbung: coba baca artikel saya di http://blog.rosihanari.net/script-php-menampilkan-hasil-pencarian-multikategori-dengan-advanced-paging mas…
Jika ada yang nanya sama saya, blog mana yang paling bagus, berkualitas, dan baik hati mau share ilmunya, maka saya akan katakan rosihanari.net!
Trims dah bagi2 ilmu, semoga tuhan mbls amal ibadah ini
@yanno dwi ananda: amin… mas masih banyak kok blog2 yang lebih keren dan bermutu dari yang ini.
pak, mau tanya… bagaimana caranya membuat halaman berdasarkan tanggal, tidak memandang jumlah data per halaman yang penting satu halaman muncul data untuk satu tanggal. di dalam tabel sudah ada kolom tanggal. terima kasih.
Mas mhn bantuannya, url data sudah berupa ?page=bttampil, gmn ya cara membuat paging krn sudah sy coba tp tidak bisa muncul
Mas sy mau minta tlg cek kode php saya tp saya tidak bs kirim, gmn cara saya mengirimnya ?
pak Ari, tutorialnya bagus sekali dan sangat membantu..
Terima kasih banyak pak atas tutorialnya. Saya mengikuti semua step pada tutorial di atas dan scriptnya berjalan dengan sangat baik.
pak ari ,setelah saya coba kok, kok ada tulisannya undefined variable $showPage, mohon penjelasannya…
salam kenal…
saya baru kenal namanya PHP, n ini karya pertama saya, tolong ajarkan saya dong tentang paging, saya membuat sebuah toko buku online, setiap saya klik kategori buku,semua buku tampil dalam satu halaman, saya ingin per halaman cuma 5 buku..
ni source bukukoleksinya…
http://www.ziddu.com/download/9938979/bukukoleksi.rar.html
terimakasih
thanks banget infonya kebetulann lgi butuh,,,
pa masih lum ngerti nih tutorialnya,,,
tapi banyak membantu… makasih…
mas punya ku muncul pesan ini :
Notice: Undefined variable: showPage in C:\Program Files\EasyPHP-5.3.2i\www\show.php on line 62
Notice: Undefined variable: showPage in C:\Program Files\EasyPHP-5.3.2i\www\show.php on line 63
tolong solusinya ya…terimakasih…
Saya Sangat Menyukai Artikel Ini…Terima kasih Jazakallah
Terima kasih mas artikelya. Ini sudah langsung saya coba dan berhasil. Makasih artikelnya… ^^
@ismail: coba Anda ganti pakai AppServ mas, itu hanya pengaruh di konfigurasi php.ini nya saja.
thanks tutor nya bang rosihan, cuma mau nanya, kan kalo link nya di klik, gimana cara munculin datanya dari database? mohon bantuannya bang… =.=”
@iksan: kan datanya sudah otomatis muncul dari database??
Assalamu Alaikum
Mas saya Punya Kendala Seperti ini:
Saya ingin membuat Paging..
Misal yang ingin ditampilkan 5 halaman dengan 5 data:
Tapi Yang Pertama muncul seperti ini
1 2 3 4 5 next
ketika 1 sampai 5 diklik, dia hanya menuju ke masing2 halaman, ketika “next” di klik maka yang tampil:
prev 6 7 8 9 10 next
jadi “next” adalah batas akhir halaman yang muncul + 1,
Sedangkan “Prev” adalah batas awal dari halaman sebelumnya, nah ketika “prev” di klik maka yang tampil adalah:
1 2 3 4 5 next
Mohon Pencerahannya mas..terima kasih..jazakallah khairan katsira..
pak,mau nanya ne,…klo penggunaan fungsi “LIMIT x,y” di microsoft access,kira gmana y?
mohon bantuannya pak y,soalnya lagi ngerjain skripsi sy ne…:)
thank’s idenya….tambhan pnting untuk tugas…
Saya sudah mencoba skrip yg di atas, tapi ko malah muncul pesan “error” di browsernya ketika saya panggil file yg paging itu di browser. Itu kenapa ya????
@ika: ya… coba dicek pada nomor baris yang salah itu mbak, dan perbaiki. pasti ada yang salah tuh… Good luck!!
Pak ari saya mau tanya bagaimana ya jika saya membuat web di komputer saya dan database mysqlnya di komputer lain. Koneksinya gimana pak
@idian purnama: syaratnya antar komputer tsb harus terkoneksi LAN ya mas. Trus… arahkan saja koneksi mysql di script PHP nya ke nomor IP pc yang ada mysql nya. Contoh: mysql_connect(“192.168.1.2″, “user”, “password”);
udah pak terimakasih. saya mau tanya lagi. gimana cara membuka blokiran dari nawala ? dan
saya pengen bikin program pake php untuk menyimpan file ke server modelnya seperti filezilla gitu pak ?? segala jenis file
@idian: nawala itu apa mas?
pak, saya kok kluarnya kek gini yah
Notice: Undefined variable: showPage in C:\wamp\www\TA\teman.php on line 119
Notice: Undefined variable: showPage in C:\wamp\www\TA\teman.php on line 120
itu variable showPage klo bole tau dr mana ya?
trus katanya setting php.ini, setting dmn yah?
@belly: coba masuk ke php.ini, dan cari baris ini
error_reporting = …
Ubahlah isi titik-titiknya dengan E_ALL & ~E_NOTICE
sehingga menjadi
error_reporting = E_ALL & ~E_NOTICE
Simpan dan restart kembali apachenya.
wah. makasih banyak ya.. sangat membantu buat tugas akhir saya. tks.
Oya, satu lagi ane hampir lupa. Ane akan naro’ url “Ide Membuat Advance Paging” ini di web ane secara permanen kalo masalah ane ini bisa dibantu pemecahannya utk paging.
Karena saya blum bisa bikin paging utk list url di web saya, jadi saya akalin aj dengan bikin list per 20 url, 100, url, 500 url n 1000 url.
asalamualikum…
pa ari … MANTAP SANGAT tutorialnya, sangat membantu, terimakasih pa..
tapi pak klo DBMS nya kita menggunaka SQL Server, querynya gimana ya pa??
mohon bantuan..
terimakasih sebelumnya.
@zony: konsepnya sama saja mas, paling yang beda cuman cara koneksi dari php ke sql server saja, dan cara menjalankan query nya.
makasih banyak mas……sangat sangat membantu
sip… mantab…
.ada script slide shownya ga..hehe