Teknik Membuat On Page Paging
November 3rd, 2009 | by rosihanari |
Cetak Artikel Ini
Seringkali apabila kita menjumpai teknik tentang paging, paging yang dimaksud terkait dengan cara penyajian sejumlah data ke dalam beberapa halaman. Saya pun pernah membahas teknik paging ini pada salah satu artikel saya tentang advanced paging.
Namun.. bagaimana bila teknik paging ini diterapkan pada sebuah artikel? Idenya begini, misalkan kita membuat script CMS untuk menampilkan sebuah artikel. Selanjutnya andaikan kita punya sebuah artikel yang suangaa..aat panjang. Karena saking panjangnya, kita ingin membuat artikel tersebut terbagi ke dalam beberapa halaman. Nah… teknik ini nantinya juga akan menggunakan paging.
Trus.. bagaimana tuh cara membuatnya?
OK… sebagai contoh, misalkan kita memiliki tabel untuk menyimpan artikel seperti di bawah ini:
CREATE TABLE `post` ( `id` int(11) AUTO_INCREMENT, `title` varchar(100), `konten` text, PRIMARY KEY (`id`) )
Untuk tabel contoh di atas, sengaja saya ambil sederhana saja ya, yaitu terdiri dari field ‘id’, ‘title’, dan ‘konten’. Anda bisa menambahkan field yang lain, misalnya tanggal posting, author dan juga kategori artikel.
Sedangkan contoh data artikelnya sebagaimana tersaji pada contoh berikut ini:
INSERT INTO `post` VALUES ('1', 'Judul 1', 'ini adalah halaman pertama. ini adalah halaman pertama. ini adalah halaman pertama. ini adalah halaman pertama. ini adalah halaman pertama. ini adalah halaman pertama.<!--next-->ini adalah halaman kedua. ini adalah halaman kedua. ini adalah halaman kedua. ini adalah halaman kedua. ini adalah halaman kedua. ini adalah halaman kedua. ini adalah halaman kedua.<!--next-->ini adalah halaman ketiga. ini adalah halaman ketiga. ini adalah halaman ketiga. ini adalah halaman ketiga. ini adalah halaman ketiga. ini adalah halaman ketiga. ini adalah halaman ketiga. ');
INSERT INTO `post` VALUES ('2', 'Judul 2', 'ini adalah halaman pertama. ini adalah halaman pertama. ini adalah halaman pertama. ini adalah halaman pertama. ini adalah halaman pertama. ini adalah halaman pertama.<!--next-->ini adalah halaman kedua. ini adalah halaman kedua. ini adalah halaman kedua. ini adalah halaman kedua. ini adalah halaman kedua. ini adalah halaman kedua. ini adalah halaman kedua. <!--next-->ini adalah halaman ketiga. ini adalah halaman ketiga. ini adalah halaman ketiga. ini adalah halaman ketiga. ini adalah halaman ketiga. ini adalah halaman ketiga. ini adalah halaman ketiga. ');
Bila Anda perhatikan sampel data di atas, terlihat bahwa di dalam postingan terdapat tanda
<!--next-->
Tanda ini nantinya digunakan untuk pemisah halaman pada artikel tersebut. Konsep penggunaan tanda pemisah ini saya adopsi dari teknik yang digunakan oleh Wordpress. Tanda itu sebaiknya disisipkan secara manual ke dalam artikel, bukannya secara otomatis, karena hanya author atau penulis artikelah yang tahu kapan dan di bagian mana harus memenggal halamannya.
Oya… Anda juga boleh menggunakan atau membuat tanda pemisah lain sesuai keinginan sendiri.
OK… kita lanjutkan. Sekarang untuk skenarionya, pertama kita buat script untuk memunculkan semua judul artikel yang ada dalam tabel database. Selanjutnya bila kita klik salah satu title, maka akan tampil full artikelnya.
Berikut ini adalah script untuk memunculkan semua title artikelnya.
artikel.php
<?php mysql_connect("dbhost", "dbuser", "dbpass"); mysql_select_db("dbname"); $query = "SELECT * FROM post"; $hasil = mysql_query($query); // menampilkan list judul artikel echo "<ul>"; while ($data = mysql_fetch_array($hasil)) { echo "<li><a href='view.php?id=".$data['id']."'>".$data['title']."</a></li>"; } echo "</ul>"; ?>
Hasil dari script di atas tampak pada gambar di bawah ini

Nah.. kemudian kita akan membuat script view.php nya. Namun sebelum kita mulai membuatnya, kita harus punya ide terlebih dahulu.
Bagaimana idenya? OK misalkan kita punya sebuah string sbb:
xxxxxx<!--next-->yyyyyy<!--next-->zzzzzz
Untuk konsep paging on page tersebut, langkah pertama kita pecah dahulu string di atas ke dalam beberapa substring. Substring ini nanti akan dikaitkan dengan masing-masing halaman. Pemecahan tersebut dilakukan berdasar tanda . Sehingga dari proses ini kita dapatkan 3 buah subtring (3 buah halaman) yang tersimpan dalam bentuk array, yaitu subtring pertama (array ke-0) yang nanti sebagai halaman pertama yaitu ‘xxxxxx’ , subtring kedua (array ke-1) yang nanti sebagai halaman kedua, dan subtring ketiga (array ke-2) yang nanti sebagai halaman ketiga.
OK… berikutnya kita bisa terapkan konsep di atas pada script view.php
view.php
<?php mysql_connect("dbhost", "dbuser", "dbpass"); mysql_select_db("dbname"); // membaca id artikel dari link $id = $_GET['id']; // query untuk membaca data artikel berdasar id $query = "SELECT * FROM post WHERE id = '$id'"; $hasil = mysql_query($query); $data = mysql_fetch_array($hasil); // memecah artikel berdasarkan tanda pemisah $pecah = explode("<!--next-->", $data['konten']); // menampilkan title echo "<h1>".$data['title']."</h1>"; // menampilkan halaman pertama dari artikel echo "<p>".$pecah[0]."</p>"; // menampilkan link paging echo "<p>Halaman: "; for ($i=1; $i<=count($pecah); $i++) { echo "<a href='view.php?id=".$data['id']."&page=".$i."'>".$i."</a> "; } echo "<p>"; } ?>
Bila kita perhatikan link paging di atas, maka link tersebut berbentuk
<a href='view.php?id=...&page=...'>...</a>
yang dalam hal ini, nomor halaman yang dituju adalah berdasarkan parameter ‘page’ nya. Sekarang bagaimana cara menampilkan isi dari halaman tertentu? Ini dia script modifikasinya
view.php
<?php mysql_connect("dbhost", "dbuser", "dbpass"); mysql_select_db("dbname"); // membaca id artikel dari link $id = $_GET['id']; // query untuk membaca data artikel berdasar id $query = "SELECT * FROM post WHERE id = '$id'"; $hasil = mysql_query($query); $data = mysql_fetch_array($hasil); // memecah artikel berdasarkan tanda pemisah $pecah = explode("<!--next-->", $data['konten']); // menampilkan title echo "<h1>".$data['title']."</h1>"; // jika parameter 'page' belum digunakan, maka akan menampilkan isi halaman pertama (array ke-0) // jika parameter 'page' sudah diset, maka akan menampilkan isi halaman ke-i yang dituju (array ke-(i-1)) if (isset($_GET['page'])) { echo "<p>".$pecah[$_GET['page']-1]."</p>"; } else echo "<p>".$pecah[0]."</p>"; // menampilkan link paging echo "<p>Halaman: "; for ($i=1; $i<=count($pecah); $i++) { echo "<a href='view.php?id=".$data['id']."&page=".$i."'>".$i."</a> "; } echo "<p>"; } ?>
OK.. sudah sedikit lebih baik sekarang scriptnya. Namun… masih ada kelemahan sedikit, yaitu bila dalam artikel tersebut tidak ada paging (mungkin karena artikelnya pendek), maka link paging halaman tersebut masih tetap muncul. So… kita mesti modifikasi sedikit dalam view.php nya menjadi:
view.php
<?php mysql_connect("dbhost", "dbuser", "dbpass"); mysql_select_db("dbname"); // membaca id artikel dari link $id = $_GET['id']; // query untuk membaca data artikel berdasar id $query = "SELECT * FROM post WHERE id = '$id'"; $hasil = mysql_query($query); $data = mysql_fetch_array($hasil); // memecah artikel berdasarkan tanda pemisah $pecah = explode("<!--next-->", $data['konten']); // menampilkan title echo "<h1>".$data['title']."</h1>"; // jika parameter 'page' belum digunakan, maka akan menampilkan isi halaman pertama (array ke-0) // jika parameter 'page' sudah diset, maka akan menampilkan isi halaman ke-i yang dituju (array ke-(i-1)) if (isset($_GET['page'])) { echo "<p>".$pecah[$_GET['page']-1]."</p>"; } else echo "<p>".$pecah[0]."</p>"; if (count($pecah) > 1) { // menampilkan link paging jika jumlah pecahan artikelnya > 1 echo "<p>Halaman: "; for ($i=1; $i<=count($pecah); $i++) { echo "<a href='view.php?id=".$data['id']."&page=".$i."'>".$i."</a> "; } echo "<p>"; } ?>
Hasil script view.php di atas tampak pada gambar di bawah ini:

Mudah bukan membuatnya? Selamat mencoba ya…
Beberapa artikel terkait
- Ide Membuat Advanced Paging dengan PHP
- Membuat Nomor Urut Hasil Query di PHP (Combined with Paging)
- Script PHP Menampilkan Hasil Pencarian Multikategori dengan Advanced Paging
- Membuat Nomor Halaman (Paging) di Wordpress
- Teknik Submit Data Melalui Multi Form
- Teknik Membuat Script Mengubah Ukuran Image dengan Javascript
- Teknik Scripting Mencegah SQL Injection di PHP
- Teknik Debugging Dalam Membuat Program
- Teknik Debugging Script PHP + MySQL
- Teknik Untuk Memecah String Menjadi Substring dengan Jumlah Karakter Sama
Share this article on:
Kata kunci: php script paging cms - script paging artikel - script php paging - teknik paging - teknik paging php -
Pertama di Indonesia: "Murottal Al Qur'an + Terjemahan" dalam bentuk CD MP3 Original (
Rosihan Ari adalah seorang programmer, penulis buku, trainer, peneliti dan berusaha menjadi seorang blogger sejati dengan memberikan yang terbaik buat negeri ini. Berfokus pada computer programming serta computer aided learning for mathematics, ia ingin berbagi ilmu yang dimilikinya. 


Thanks pak semoga membantu rekan2 koder
.-= heru´s last blog ..Menampilkan Top Komentator Tanpa Plugin di Wordpress ( Part 2 ) =-.
bagaimana menbuat php combo box, check box and radio button data simpan in MYSQL database…saya pun keliru…
@winnie: coba anda search di blog saya ini mbak. Saya seringkali memposting terntang masalah hal tsb.
mampir dulu ah, sambil lirik2 postingannya mas Rosihanari,..salam, happy blogging & coding..:)
@hylmi: thanks mas atas kunjungannya. Ditunggu nih launching musamus CMS nya.
Teman2…tolong bantuin donk…….!
Q bkn web pke parse url tp g bisa jalan…..!
ADA yg ngerti soal parse url g?….bantuin y……!
Thank’s B4
@ozhy: parse URL gimana maksudnya mas?
donlot nya dunks mas!! Trima kasih.
Pak, artikel on page paging bisa diedit ga? Bgmn cara mengeditnya per halaman jg? nuwun
@rendra: bisa diedit kok. silakan diedit sendiri ya mas…