P. 1
Paging Php

Paging Php

|Views: 298|Likes:
Published by Rani Muryani

More info:

Published by: Rani Muryani on Jun 23, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

12/16/2014

pdf

text

original

Rosihan Ari`s Blog » Ide Membuat Advanced Paging dengan PHP » Print

http://blog.rosihanari.net/ide-membuat-advance-paging-dengan-php/print/

- Rosihan Ari`s Blog - http://blog.rosihanari.net -

Ide Membuat Advanced Paging dengan PHP
Posted By rosihanari On April 30, 2009 @ 7:18 pm In PHP,Programming,SQL | 136 Comments

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
[1]

)

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);

1 of 10

9/25/2010 7:58 PM

. Dengan demikian total terdapat 3 halaman dalam pagingnya. } else $noPage = 1. . .php maka otomatis menuju ke halaman 1. 1. Query SQL yang digunakan adalah SELECT * FROM guestbook LIMIT offset. URL nya http://namaserver/show. maka URL nya http://namaserver/show. 13. Lantas apa gunanya offset tersebut? Offset nantinya akan digunakan pada query SQL untuk memunculkan data pada setiap halaman. 12.php?page=3. Trus. dan seterusnya. 6. // jumlah data yang akan ditampilkan per halaman $dataPerPage = 5. 'dbuser'. data yang ditampilkan adalah 5. // sedangkan apabila belum. Perlu Anda tahu. // apabila $_GET['page'] sudah didefinisikan. if(isset($_GET['page'])) { $noPage = $_GET['page']. dst. 2. Sehingga untuk memunculkan data guestbook pada halaman pertama.. bila dibuka pertama kali dengan URL http://namaserver/show. maka perintahnya 2 of 10 9/25/2010 7:58 PM . jumlahData. Offset digunakan untuk mengatur posisi awal data yang akan ditampilkan perhalaman. Serta halaman ketiga. ?> Kita lanjutkan skenarionya. dalam teknik paging perlu adanya pengaturan posisi awal data atau lebih dikenal dengan istilah offset. Sedangkan bila terdapat parameter ?page=… maka nomor halamannya menyesuaikan nilai pada parameter ?page tersebut. . Untuk menuju ke halaman 2.. Untuk halaman pertama. Untuk mewujudkan hal ini. gunakan nomor halaman tersebut. Data pada baris pertama hasil query SQL disebut data pada posisi ke-0. nomor halamannya 1. Sedangkan untuk menuju ke halaman 3. Dari skenario di atas tampak bahwa bila parameter ?page=. data pada baris kedua disebut data pada posisi ke-1. apa kaitannya offset dengan paging? Sabar… perhatikan dulu contoh berikut ini Sebagai contoh. 8. 'dbpassword'). mysql_select_db('dbname'). misalkan terdapat 15 data dalam tabel guestbook dimana kita ingin menyajikan pada setiap halaman adalah 5 data. bahwa data dalam database memiliki urutan seperti halnya array. 11. dan 9. Untuk script paging ini. pastilah data yang ditampilkan adalah data ke – 0.net/ide-membuat-advance-paging-dengan-php/print/ // jumlah data yang akan ditampilkan per halaman $dataPerPage = 5.. Sedangkan halaman kedua. 14.rosihanari. 3 dan 4. halaman 2 data awalnya adalah data pada urutan ke-5 dan halaman 3 data pada urutan ke 10. maka kita tambahkan perintah <?php mysql_connect('namahost'. belum diberikan pada URL maka secara otomatis menuju ke nomor halaman 1. 7. Nah… perhatikan bahwa untuk halaman 1. . data awal yang ditampilkan adalah data pada urutan ke-0.php?page=2.Rosihan Ari`s Blog » Ide Membuat Advanced Paging dengan PHP » Print http://blog. ?> Selanjutnya. data ke 10.

so. dah paham. while($data = mysql_fetch_array($result)) { echo "<tr><td>". trus yang jadi masalah adalah bagaimana menentukan offset pada setiap halamannya? Bila kita lihat patternnya. dan seterusnya. <?php mysql_connect('namahost'. Lho kok bisa? he. $dataPerPage".$data['nama']. gunakan nomor halaman tersebut. maka nilai offset = (1 – 1) * 5 = 0. 'dbpassword'). // menampilkan data echo "<table border='1'>". // jumlah data yang akan ditampilkan per halaman $dataPerPage = 5.. Bener kan? OK. nomor halamannya 1.rosihanari.. OK.$data['tanggal']. kita bisa tambahkan scriptnya untuk mencari offset dan query SQL nya. 'dbuser'. } else $noPage = 1."</td><td>". $result = mysql_query($query) or die('Error').net/ide-membuat-advance-paging-dengan-php/print/ SELECT * FROM guestbook LIMIT 0. maka hubungan antara offset. // query SQL untuk menampilkan data perhalaman sesuai offset $query = "SELECT * FROM guestbook LIMIT $offset."</td><td>". 3x kita cek saja. dah paham tentang offset."</td></tr>". 5. dan untuk memunculkan data pada halaman ketiga. jumlah data yang ingin ditampilkan per halaman dan nomor halamannya adalah: offset = (no halaman – 1) * jumlah data per halaman. nilai $offset = (2 – 1) * 5 = 5 dan halaman ketiga $offset = (3 – 1) * 5 = 10. } 3 of 10 9/25/2010 7:58 PM ."</td><td>". // perhitungan offset $offset = ($noPage . Untuk halaman 2.$data['komentar']. deh. Untuk halaman 1. mysql_select_db('dbname').. // apabila $_GET['page'] sudah didefinisikan. echo "<tr><td>Nama</td><td>Email</td><td>Tanggal</td><td>Komentar</td></tr>".1) * $dataPerPage. perintahnya: SELECT * FROM guestbook LIMIT 5... 5. Untuk memunculkan data pada halaman kedua. if(isset($_GET['page'])) { $noPage = $_GET['page'].$data['email']. 5. perintahnya: SELECT * FROM guestbook LIMIT 10. // sedangkan apabila belum.Rosihan Ari`s Blog » Ide Membuat Advanced Paging dengan PHP » Print http://blog. deh.

gunakan nomor halaman tersebut. nomor halamannya 1.7) = 4. maka total ada berapa halaman yang dibutuhkan? OK. SELECT COUNT(*) FROM guestbook. Trus… yang jadi masalah adalah bagaimana mendapatkan jumlah datanya? Nah… untuk mendapatkan jumlah data keseluruhan yang ada kita gunakan query SQL. Misal ceil(3. // perhitungan offset $offset = ($noPage . dan kita ingin menyajikan data sejumlah 5 per halaman. benar ada 3. ceil() adalah function yang digunakan untuk membulatkan ke atas suatu bilangan. mysql_select_db('dbname'). Untuk menghitung total jumlah halaman. echo "<tr><td>Nama</td><td>Email</td><td>Tanggal</td><td>Komentar</td></tr>". benar ada 7 (untuk halaman ke-7 hanya tampil 1 buah data).net/ide-membuat-advance-paging-dengan-php/print/ echo "</table>". ?> Nah… masalah berikutnya adalah bagaimana menentukan total jumlah halamannya? Hal ini penting karena nantinya akan ditampilkan sebagai link navigasi pagingnya. ceil(3..1) * $dataPerPage. } else $noPage = 1. // menampilkan data echo "<table border='1'>". while($data = mysql_fetch_array($result)) { 4 of 10 9/25/2010 7:58 PM . Trus… kalo ada 31 data dan kita ingin menyajikan data sejumlah 5 per halaman. $dataPerPage". dan sekarang kita bisa tambahkan proses menghitung jumlah data dan jumlah halaman pada scriptnya. // query SQL untuk menampilkan data perhalaman sesuai offset $query = "SELECT * FROM guestbook LIMIT $offset..2) = 4. $result = mysql_query($query). // sedangkan apabila belum. total ada berapa halaman? OK. <?php mysql_connect('namahost'. kita cari patternnya terlebih dahulu. Misalkan terdapat 15 data. .Rosihan Ari`s Blog » Ide Membuat Advanced Paging dengan PHP » Print http://blog. OK… I know. Sehingga dari pattern tersebut formula untuk menghitung jumlah halaman adalah jumlah halaman = ceil(jumlah data / data per halaman). . // apabila $_GET['page'] sudah didefinisikan.rosihanari. if(isset($_GET['page'])) { $noPage = $_GET['page']. 'dbpassword'). // jumlah data yang akan ditampilkan per halaman $dataPerPage = 5. 'dbuser'.

tepat sekali yaitu ketika nomor halaman yang sedang aktif (sedang dibuka) setelah halaman pertama atau $noPage > 1. $hasil = mysql_query($query). "<a href='". // mencari jumlah semua data dalam tabel guestbook $query = "SELECT COUNT(*) AS jumData FROM guestbook". if(isset($_GET['page'])) { $noPage = $_GET['page']. sebelum memunculkan link nomor halaman. menuju ke nomor halaman berapakah link tersebut? yap. 'dbpassword'). 5 of 10 9/25/2010 7:58 PM . 'dbuser'."?page=".rosihanari.$data['komentar']. Kita hanya menggunakan looping saja."</td></tr>"."</td><td>". Kapan link ini akan muncul? ya. Tapi eit. // query SQL untuk menampilkan data perhalaman sesuai offset $query = "SELECT * FROM guestbook LIMIT $offset. mysql_select_db('dbname')..$_SERVER['PHP_SELF'].&lt.Rosihan Ari`s Blog » Ide Membuat Advanced Paging dengan PHP » Print http://blog.... .$data['tanggal']. Prev</a>". $data = mysql_fetch_array($hasil). .. tunggu dulu pada desain advance paging di atas.($noPage-1). // perhitungan offset $offset = ($noPage . // apabila $_GET['page'] sudah didefinisikan. // jumlah data yang akan ditampilkan per halaman $dataPerPage = 5."</td><td>". } else $noPage = 1. Untuk memunculkan nomor halamannya."'>&lt. benar yaitu menuju ke nomor halaman sebelumnya ($noPage – 1). caranya mudah. } echo "</table>". Dengan demikian kita bisa tambahkan perintah berikut ini pada script if ($noPage > 1) echo sehingga menjadi <?php mysql_connect('namahost'. Trus.$data['email'].net/ide-membuat-advance-paging-dengan-php/print/ echo "<tr><td>". $dataPerPage"."</td><td>".1) * $dataPerPage. // menentukan jumlah halaman yang muncul berdasarkan jumlah semua data $jumPage = ceil($jumData/$dataPerPage). terdapat link << prev. ?> Nah… sekarang tinggal bagaimana cara memunculkan link berisi nomor halaman yang menuju ke setiap halamannya. nomor halamannya 1.$data['nama']. // sedangkan apabila belum. $jumData = $data['jumData']. gunakan nomor halaman tersebut.

$_SERVER['PHP_SELF']. if ($page == $noPage) echo " <b>". Namun harap dicatat di sini bahwa karena tidak semua nomor halaman ditampilkan sesuai desain sebelumnya maka kita perlu berikan syarat. = mysql_query($query).$page. // mencari jumlah semua data dalam tabel guestbook $query $hasil $data = "SELECT COUNT(*) AS jumData FROM guestbook"."</a> ".. $page++) { if ((($page >= $noPage ."</td></tr>".&lt.3) && ($page <= $noPage + 3)) || ($page == 1) || ($page == $jumPage)) { if (($showPage == 1) && ($page != 2)) echo ". Maksud dari syarat if ((($page >= $noPage ."'>&lt. $jumData = $data['jumData']."..Rosihan Ari`s Blog » Ide Membuat Advanced Paging dengan PHP » Print http://blog. if (($showPage != ($jumPage .($noPage-1)."</td><td>".3) && ($page <= $noPage + 3)) || ($page == 1) || ($page == $jumPage)) { ."</td><td>"..$page.$data['nama']. 6 of 10 9/25/2010 7:58 PM .1)) && ($page == $jumPage)) echo ". // menampilkan data echo "<table border='1'>"."?page=". $page <= $jumPage.$data['email']. $showPage = $page. for($page = 1.$data['komentar']. } echo "</table>".$data['tanggal'].$page."."'>". // menampilkan link previous if ($noPage > 1) echo . Adapun perintah-perintahnya adalah seperti di bawah ini."</td><td>"."</b> ". = mysql_fetch_array($hasil). } "<a href='"."?page=". . . // menentukan jumlah halaman yang muncul berdasarkan jumlah semua data $jumPage = ceil($jumData/$dataPerPage).net/ide-membuat-advance-paging-dengan-php/print/ $result = mysql_query($query) or die('Error'). ?> Berikutnya kita akan tampilkan link nomor-nomor halamannya menggunakan looping. else echo " <a href='"..rosihanari. echo "<tr><td>Nama</td><td>Email</td><td>Tanggal</td><td>Komentar</td></tr>". yaitu menuliskan link nomor halaman mulai dari 1 s/d jumlah halamannya.$_SERVER['PHP_SELF']. Prev</a>". } } Konsep loopingnya sederhana. while($data = mysql_fetch_array($result)) { echo "<tr><td>".

Demikian pula untuk perintah if (($showPage != ($jumPage ..net/ide-membuat-advance-paging-dengan-php/print/ adalah hanya memunculkan link nomor halaman 1 dan juga halaman terakhir. Digunakan untuk memunculkan tanda ‘…’ di antara halaman nomor 1 dengan halaman berikutnya yang tampil.$_SERVER['PHP_SELF'].". pada script. Apabila setelah 1 ini muncul 2. Namun link dari nomor halaman ini ditampilkan hanya pada nomor halaman yang sedang tidak aktif.". // jumlah data yang akan ditampilkan per halaman $dataPerPage = 5. nomor halamannya 1. // apabila $_GET['page'] sudah didefinisikan. OK kapan link ini muncul? ya benar… yaitu ketika halaman yang sedang aktif bukanlah pada halaman terakhir atau sebelum halaman terakhir.. Perintah if (($showPage == 1) && ($page != 2)) echo ".</a>". // sedangkan apabila belum.rosihanari.&gt."?page=". Perintah di atas digunakan untuk memunculkan tanda ‘…’ sebelum nomor halaman terakhir bila halaman sebelumnya yang muncul bukan ‘nomor halaman terakhir – 1′. sekaligus pula nomor-nomor halaman dalam rentang 3 halaman sebelum dan sesudah nomor halaman yang aktif.. mysql_select_db('dbname')."'>Next &gt. Terakhir."</a> ". if(isset($_GET['page'])) { 7 of 10 9/25/2010 7:58 PM ..Rosihan Ari`s Blog » Ide Membuat Advanced Paging dengan PHP » Print http://blog. maka tanda ini tidak muncul.$page.. Contoh jika halaman yang aktif adalah halaman 7 dari 15 halaman.$page.($noPage+1). sehingga scriptnya menjadi <?php mysql_connect('namahost'. else echo " <a href='"."?page=". 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. digunakan untuk menampilkan link nomor halaman. Tapi perlu diingat bahwa tanda ini akan muncul bila nomor halaman yang muncul setelah 1 ialah bukan 2. kita perlu link untuk memunculkan next >>. 'dbpassword').$_SERVER['PHP_SELF']."'>".1)) && ($page == $jumPage)) echo ". 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>". gunakan nomor halaman tersebut. Sedangkan pada nomor halaman yang sedang aktif nomor halaman hanya dicetak tebal saja untuk menunjukkan bahwa halaman yang sedang aktif adalah halaman tersebut. 'dbuser'. Sehingga kita bisa tambahkan perintah if ($noPage < $jumPage) echo "<a href='"."</b> ".$page.

// query SQL untuk menampilkan data perhalaman sesuai offset $query = "SELECT * FROM guestbook LIMIT $offset. // perhitungan offset $offset = ($noPage .$page.."</td><td>". $dataPerPage". if ($page == $noPage) echo " <b>". = mysql_fetch_array($hasil).&gt. $page <= $jumPage.3) && ($page <= $noPage + 3)) || ($page == 1) || ($page == $jumPage)) { if (($showPage == 1) && ($page != 2)) echo ".$_SERVER['PHP_SELF']."."'>&lt.$data['tanggal']..($noPage-1).($noPage+1). } else $noPage = 1.."?page=". // menentukan jumlah halaman yang muncul berdasarkan jumlah semua data $jumPage = ceil($jumData/$dataPerPage). Prev</a>".. if (($showPage != ($jumPage ."</a> ".$_SERVER['PHP_SELF']. $jumData = $data['jumData']. // mencari jumlah semua data dalam tabel guestbook $query $hasil $data = "SELECT COUNT(*) AS jumData FROM guestbook"."?page=". } echo "</table>". = mysql_query($query).$page.$data['nama']. // memunculkan nomor halaman dan linknya for($page = 1.$_SERVER['PHP_SELF']. $page++) { if ((($page >= $noPage . $showPage = $page.$data['email']. $result = mysql_query($query) or die('Error').$data['komentar'].Rosihan Ari`s Blog » Ide Membuat Advanced Paging dengan PHP » Print http://blog. // menampilkan data echo "<table border='1'>".". // menampilkan link previous if ($noPage > 1) echo "<a href='". } } // menampilkan link next if ($noPage < $jumPage) echo "<a href='".rosihanari.$page."</td><td>".net/ide-membuat-advance-paging-dengan-php/print/ $noPage = $_GET['page']. while($data = mysql_fetch_array($result)) { echo "<tr><td>". echo "<tr><td>Nama</td><td>Email</td><td>Tanggal</td><td>Komentar</td></tr>"."'>Next &gt."</b> ". else echo " <a href='".1) * $dataPerPage."'>".&lt.</a>".1)) && ($page == $jumPage)) echo ". 8 of 10 9/25/2010 7:58 PM ."</td><td>"."?page="."</td></tr>".

net/ide-membuat-advance-paging-dengan-php URLs in this post: [1] member saya: http://source. Access [13] Mudahnya Membuat Barcode dengan PHP [14] Article printed from Rosihan Ari`s Blog: http://blog.rosihanari.net/membuat-nomor-urut-hasil-query-di-phpcombined-with-paging 9 of 10 9/25/2010 7:58 PM .rosihanari.: http://programmingtools.. Rating: 10.rosihanari.net/script-php-menampilkan-hasilpencarian-multikategori-dengan-advanced-paging [6] Membuat Nomor Urut Hasil Query di PHP (Combined with Paging): http://blog.rosihanari.0/10 (4 votes cast) Jika Anda Anda ingin mendownload beberapa tool programming 100% gratis? Silakan download di FREE PROGRAMMING TOOLS.html [3] di blog ini: http://blog. tapi gak papa deh. Selamat mencoba dan berpaging ria ingin mendownload scriptnya. silakan download di bawah ini [ Download Script [2] ] Jangan lupa terus stay tune di blog ini [3] karena pasti akan ada artikel-artikel menarik yang lain daripada yang lain seputar programming.rosihanari.com/download/4546154/paging.net [4] FREE PROGRAMMING TOOLS.net/ide-membuat-advance-paging-dengan-php/print/ ?> Wah panjang juga ya artikelnya.net URL to article: http://blog.rosihanari.ziddu.Rosihan Ari`s Blog » Ide Membuat Advanced Paging dengan PHP » Print http://blog.rosihanari. mudah-mudahan ada manfaatnya bagi Anda. [4] atau ingin berdonasi untuk pengembangan blog ini cukup dengan $1 via Paypal? Beberapa artikel terkait Script PHP Menampilkan Hasil Pencarian Multikategori dengan Advanced Paging [5] Membuat Nomor Urut Hasil Query di PHP (Combined with Paging) [6] Teknik Membuat On Page Paging [7] Membuat Nomor Halaman (Paging) di WordPress [8] Ide Membuat Sistem Login Aplikasi Multi User [9] Ide Membuat Generator Kode Unik Incremental Otomatis [10] Ide Membuat Script Upload Download File Dengan Batasan Hak Akses [11] Teknik Debugging Script PHP + MySQL [12] Script INSERT Data Dengan PHP dan MS.zip.rosihanari.net [2] Download Script: http://www.net [5] Script PHP Menampilkan Hasil Pencarian Multikategori dengan Advanced Paging: http://blog.

rosihanari.net/mudahnya-membuat-barcode-dengan-php Copyright © 2009 Rosihan Ari`s Blog.net/teknik-debugging-script-php-mysql [13] Script INSERT Data Dengan PHP dan MS.rosihanari.rosihanari. All rights reserved.rosihanari.net/membuat-nomor-halaman-paging-di-wordpress [9] Ide Membuat Sistem Login Aplikasi Multi User: http://blog.rosihanari.rosihanari.net/ide-membuat-sistem-login-aplikasi-multi-user [10] Ide Membuat Generator Kode Unik Incremental Otomatis: http://blog.rosihanari.rosihanari. 10 of 10 9/25/2010 7:58 PM .net/teknik-membuat-on-page-paging [8] Membuat Nomor Halaman (Paging) di WordPress: http://blog.net/ide-membuat-script-upload-downloadfile-dengan-batasan-hak-akses [12] Teknik Debugging Script PHP + MySQL: http://blog.net/ide-membuat-generator-kode-unik-incrementalotomatis [11] Ide Membuat Script Upload Download File Dengan Batasan Hak Akses: http://blog.rosihanari.net/ide-membuat-advance-paging-dengan-php/print/ [7] Teknik Membuat On Page Paging: http://blog.Rosihan Ari`s Blog » Ide Membuat Advanced Paging dengan PHP » Print http://blog. Access: http://blog.net/script-insert-data-dengan-php-dan-ms-access [14] Mudahnya Membuat Barcode dengan PHP: http://blog.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->