Simple Paging (PHP)

Post at Wed, 01.August.2007 10:46:49 PM .
Hit: 12015 . Comment: 26
 
 
Bagi programmer pasti sering membuat aplikasi yang menampilkan data. Nah, apabila data yang mau ditampilkan sedikit, itu tidak masalah, tapi bagaimana jika data  yang mau ditampilkan jumlahnya puluhan bahkan ratusan maka pengguna akan menghadapi scrool window yang sangat panjang (sampe cape scrool-nya :P)  dan loading-nya  akan lama. Nah, untuk mengatasi hal ini digunakan satu sistem yang sudah banyak dikenal yaitu Sistem Paging. Sistem Paging adalah sistem dimana menampilkan data-data yang ada secara bertahap, jadi data tidak ditampilkan semua, data dibagi menjadi beberapa halaman dengan masing-masing halaman hanya memiliki beberapa data saja. Kemudian jika halaman tujuan diklik baru data pada halaman tersebut ditampilkan, jadi proses loading yang terjadi tidak lama.
Sistem Paging ini saya jelaskan lebih dikhususkan untuk penggunaan pada Website.
Sekarang saya akan menjelaskan dulu logika dasar dari sistem Paging. Perhatikan table di bawah ini :












Sebagai  contoh, kita memiliki 22 record daftar telepon, kemudian ingin kita tampilkan dengan dibagi menjadi beberapa halaman dengan maksimum 5 record per halaman.
Nah, pertama kita cari dulu jumlah halaman yang akan terbentuk :

Jumlah Halaman = Total Record / Maksimum Record tiap halaman
Jumlah Halaman = 22 / 5 = 4.4 Halaman


Ibarat kan saja halaman itu halaman pada buku novel  ukuran kertas A4,dimana ada sisa sedikit cerita yang tidak muat lagi untuk ditampilkan di halaman terakhir, mau tak mau kertas musti ditambah satu lagi guna menempatkan sisa cerita yang ada (walaupun hanya menggunakan separo dari ukuran kertas saja. Maka dari itu setiap perhitungan Jumlah Halaman kita akan bulatkan ke atas.

Jumlah Halaman = 22 / 5 = 4.4 = 5 Halaman

Kemudian setelah jumlah halaman didapat, kita lakukan pencetakan nomor halaman (berupa link). Masing-masing halaman/link diberi value kelipatan 5 (jumlah maksimum record per halaman) dimulai dari 0 (karena perhitungan record dari database dimulai dari 0). Jadi pada halaman 1 akan memiliki value 0, halaman 2 memiliki value 5,dst . Dapat dilihat pada table di atas. Value ini akan dipakai sebagai penanda awal record yang akan ditampilkan. Halaman 1 akan dimulai dari record ke-0, halaman 2 dimulai dari record yang ke-5,dst. 

Nah,ini logika sistem paging yang saya pikiran. Sekarang saya akan menjelaskan menggunkan coding PHP.

function paging($curRec,$totalRec,$maxRec){
        $totalPage=ceil($totalRec/$maxRec);
        $curPage=ceil(($curRec+1)/$maxRec);
        $str="";
       
        /*--------------------------prev button-----------------------*/
        if($curPage>1){
            $rec=($curPage-2)*$maxRec;                   
            $str.=’ <a href= “?cur=’.$rec.’”>prev</a>’;           
        }
        /*-------------------------generate page number----------------*/
        for($i=1;$i<=$totalPage;$i++){
            if($i==$curPage){
                $bold=true;
            }else{
                $bold=false;
            }
            $rec=($i-1)*$maxRec;                   
            $angka=($bold)?”<b>”.$i.”</b>”:$i;
            $str.=’ <a href= “?cur=’.$rec.’”>’.$angka.’</a>’;   
        }
       
        /*--------------------------next button-----------------------*/
        if($curPage<$totalPage){
            $rec=($curPage*$maxRec);                   
            $str.=’ <a href= “?cur=’.$rec.’”>next</a>’;           
        }
       
        return $str;
       
    }

Saya akan jelaskan perbagian.

function paging($curRec,$totalRec,$maxRec){

Disini, Paging saya buat dalam bentuk function , jadi bisa dipakai dengan mudah setiap saat. Paramater yang diterima oleh function paging ini ada 3 yaitu :

  1. $curRec = digunakan untuk memberitaukan function record pertama dari halaman yang sedang aktif.
  2. $totalRec =berisi total record yang berada di dalam database.
  3. $maxRec= berisi informasi maksimum record yang boleh ditampilkan tiap halaman.

 

$totalPage=ceil($totalRec/$maxRec);

Nah ini untuk mencari total halaman yang akan dibentuk (seperti yang sudah dijelaskan logikanya di atas).


$curPage=ceil(($curRec+1)/$maxRec);

$str="";

Di atas tadi dijelaskan bahwa masing-masing halaman diberi value, nah value itu akan dipakai disini untuk mengetahui halaman yang sedang aktif dengan menggunakan rumus diatas.Untuk rumusnya, jangan tanya kenapa, itu juga saya ketemu sendiri dengan mencari kecocok2an, kalo penasaran coba tes saja.  Kemudian sediakan satu variable kosong untuk menyimpan string paging.

 

                              /*--------------------------prev button-----------------------*/

                                if($curPage>1){

                                                $rec=($curPage-2)*$maxRec;                                                                   

                                                $str.=’ <a href= “?cur=’.$rec.’”>prev</a>’;                                         

                                }

                                /*-------------------------generate page number----------------*/

                                for($i=1;$i<=$totalPage;$i++){

                                                if($i==$curPage){

                                                                $bold=true;

                                                }else{

                                                                $bold=false;

                                                }

                                                $rec=($i-1)*$maxRec;                                                                   

                                                $angka=($bold)?”<b>”.$i.”</b>”:$i;

                                           $str.=’ <a href= “?cur=’.$rec.’”>’.$angka.’</a>’;    

                                }

                               

                                /*--------------------------next button-----------------------*/

                                if($curPage<$totalPage){

                                                $rec=($curPage*$maxRec);                                                                       

                                                $str.=’ <a href= “?cur=’.$rec.’”>next</a>’;                                         

                                }

Nah setelah perhitungan tadi, maka kita sudah bisa mencetak /membuat paging dengan code di atas. Supaya gak bingung dengan code diatas, coba baca code-nya sambil melihat table yang sudah saya kasi diatas. Ini saya sertakan file php-nya supaya lebih jelas. Kalo masih bingung jg, bs hubungi saya ke email, kalo sempat saya balas .

contoh paging (tanpa database)

contoh paging
(dengan database)

 

 

Comments for "Simple Paging (PHP)"

Edi
17.June.2008 09:52:21 AM
Kalau pagingnya seperti google, bagaimana caranya ya? dia tidak menampilkan semua halaman, hanya 10 halaman saja, tapi ketika halaman ke 10 diklik dia akan menampilka mulai hal 5 s/d hal 15. Kalau pakai sistem anda ini kan berarti semua no halaman akan di
radendraculla@yahoo.com
04.November.2008 11:06:18 PM
thanks for the code ...
Yan
04.December.2008 09:58:34 AM
Thx code na udah saya modif... saya pake di class saya ya... saya sertakan nama anda koq.. Thx anyway
Ayu
14.December.2008 01:40:09 PM
thanks cara bwt pagingnya moga bs membantu sy dlm menyelesaikan tugas dr dosen...
eeng
24.December.2008 05:49:06 PM
buat paging ala google bisa bantu dong. kirimin via email ikhwan.muslim@gmail.com
bayu
16.April.2009 12:48:23 AM
keren bang.. teruslah berkarya..
16.April.2009 09:26:08 AM
thx :)
16.April.2009 09:27:05 AM
untuk mengenai paging ala google, saya se belum pernah coba buat .. belum perlu soalnya :P
mila
20.May.2009 10:03:33 AM
Thank's 4 the code.. :)
ninaRusli
26.May.2009 11:46:55 AM
terima kasih banget atas artikel n codingnya. hal ini sangat membantu sy. skali lagi thnx
Heinz
02.July.2009 05:09:02 PM
@ Edi
Itu bisa aja pake permisalan
mis ada variabel baru namanya jmlhpg
Nah, jmlhpg ini YANG SELALU MENSTANDARKAN JUMLAH NOMOR PAGE YANG BAKAL MUNCUL (MIS 10). Jadi itu mungkin khan^^
s-logy
05.August.2009 01:26:03 AM
siip, makasih...
05.August.2009 10:01:48 PM
sama2 :D
eddie
11.August.2009 11:53:06 AM
mw tny dnx.. gmn cara nya bt paging dalam php.
tp saya baca file gambar(.jpg, .gif,.png dan lain2)
nah saya mw bt paging berdasarkan gambar nya.
file gambar baca dr directori bukan database.
thx yah..
11.August.2009 10:07:28 PM
@Eddie: wah good question :D, saya juga belum pernah buat yg spt itu se, tp saya coba bantu dengan logika yang saya terpikirkan :). kalau untuk menampilkan angka pagingnya harusnya logiknya sama saja, yang penting kita bisa tau total file yang ada dalam folder yang akan ditampilkan. Nah, kalo untuk menentukan file apa yang mau ditampilkan di page 1,2,3,dst, pas load awal halaman, lakukan simpanlah url/nama2 file yg ada di dalam folder ke dalam array (mungkin bisa pakai readdir). Nah setelah itu simpanlah array ke dalam session. Karena kita sekarang sudah memiliki daftar lengkap file gambar,untuk nampilinnya sudah mudah, tinggal loop saja dari array ke-n sampai ke-n tergantung sekarang sedang berada di page ke-berapa. Jadi maksud saya membuat database bohong-bohongan yg mana dalam bentuk array. Nah supaya tidak berat, makanya saya menganjurkan untuk menyimpannya ke dalam session. Semoga logicnya cocok dengan yang dibutuhkan :P.
Awam
20.October.2009 04:18:10 PM
GImana cara penggunaannya klo di MSSQL/SQLSERVER??
30.October.2009 09:46:22 PM
@Awam: maaf kalau untuk SQLSERVER, saya kurang tau, soalnya sudah tidak mendalami SQL SERVER..he2 :P
Manellen
20.November.2009 02:12:17 PM
mantep coy
20.November.2009 10:30:53 PM
thx gan, uda mampir :D
missmof
07.December.2009 11:47:44 PM
huhuhu..bingung bikin paging tanpa database,,, mau bikin semacem image gallery gitu... bisa bantu?
08.December.2009 09:39:35 PM
@missmof : untuk paging image gallery saya pernah jelaskan logikanya pada komen di atas. ehm, mungkin bisa jg pakai JQuery , plugin untuk image gallery sudah lumayan banyak variasinya, salah satunya http://flowplayer.org/tools/demos/scrollable/gallery.html , http://vandelaydesign.com/blog/web-development/jquery-image-galleries/ , http://devkick.com/lab/galleria/, dll
07.January.2010 02:34:32 PM
thanks gan tutorialnya mantaps...mohon izin copas ya! thanks
04.May.2010 09:22:02 PM
Txs..
04.May.2010 09:42:09 PM
:) Maz, tutorial maz keren", tapi gmn bikin form comment kayak punya maz ini? Bagus maz.
06.May.2010 10:21:02 AM
@juna: itu formnya pakai jquery (javascript)..coba lihat di websitenya http://jquery.com/
blur
26.August.2010 04:02:50 AM
kirim script nya dong
Name*
E-mail* (not published)
URL
Comment*
Enter validation code

 
 
Sat, 04.September.2010
Today Visitor : 31
You are visitor No. 419619

Advertisement