Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

Cara Paginasi Data dengan PHP

by
Difficulty:IntermediateLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by ⚡ Rova Rindrata (you can also view the original English article)

Saya ingat beberapa tahun lalu ketika saya pertama kali mulai mengkode di PHP dan MySQL, betapa gembiranya saya ketika pertama kalinya mendapat informasi dari database yang muncul di web browser.

Bagi seseorang yang memiliki sedikit pengetahuan database dan pemrograman, melihat baris-baris tabel tersebut muncul di layar berdasarkan pada kode yang saya tulis (oke jadi saya menyalin sebuah contoh dari buku -- mari kita tidak perlu bersusah payah) memberi saya kemenangan yang tinggi. Saya mungkin tidak sepenuhnya mengerti semua keajaiban yang bekerja dibaliknya kemudian, tetapi keberhasilan pertama itu yang mendorong saya ke proyek-proyek besar dan lebih baik.

Sementara tingkat kegembiraan atas database saya tidak akan sama seperti dulu,
sejak pertama 'hello world' saya berjumpa dengan PHP dan MySQL saya sudah ketagihan
pada kekuatan yang membuat hal-hal sederhana dan mudah untuk digunakan.

Sebagai pengembang, salah satu masalah yangx terus-menerus saya hadapi adalah mengambil sejumlah besar set informasi dan membuatnya mudah untuk dicerna. Apakah itu daftar klien dari perusahaan besar atau katalog mp3 pribadi, harus duduk dan menatap baris demi baris demi baris data akan dapat mengecilkan hati
dan membuat frustasi. Apa yang dapat dilakukan seorang pengembang yang baik? Paginasi!


1. Paginasi

Paginasi pada dasarnya adalah proses mengambil satu set hasil dan menyebarkan
mereka ke halaman untuk membuat mereka lebih mudah untuk dilihat.

example 1

Saya menyadari lebih awal bahwa jika saya punya 5000 baris informasi untuk ditampilkan tidak hanya
hal itu akan menjadi sakit kepala bagi seseorang untuk mencoba dan membacanya, tapi kebanyakan browser akan mengambil
kekekalan Internet (yaitu, lebih dari lima detik) untuk menampilkannya.

Untuk mengatasi ini saya akan mengkode berbagai pernyataan SQL untuk mengeluarkan potongan data, dan jika saya
dalam suasana hati yang baik mungkin saya akan meletakkan beberapa tombol "next" dan "previous".
Setelah beberapa saat, harus meletakkan kode ini ke dalam setiap proyek serupa dan mengkustomisasi
agar sesuai dapat menjadi ketinggalan jaman. Cepat. Dan karena setiap pengembang yang baik tahu, kemalasan melahirkan penemuan
atau sesuatu seperti itu. Jadi suatu hari saya duduk dan memutuskan untuk datang dengan kelas PHP yang sederhana,
fleksibel, dan mudah untuk digunakan yang secara otomatis akan melakukan pekerjaan kotor untuk
saya.

Bicara tentang saya dan kelas PHP. Saya bukanlah orang yang berorientasi objek. Pada kenyataannya, saya tidak
pernah menggunakan barang-barang tersebut. Tapi setelah membaca beberapa contoh dan tutorial OOP, dan beberapa
contoh trial and error sederhana, saya memutuskan untuk mencobanya dan apakah Anda tahu?
Ia bekerja dengan sempurna untuk paginasi. Kode yang digunakan di sini adalah yang ditulis dalam PHP 4 tetapi
akan bekerja di PHP 5.


2. Database

Harus mencintai MySQL. Bukanlah pelanggaran untuk sistem database lain di luar sana, tapi untuk
saya, semua yang saya butuhkan adalah MySQL. Dan salah satu fitur yang besar dari MySQL adalah bahwa mereka memberi Anda beberapa
sampel database gratis untuk bermain dengannya di http://dev.mysql.com/doc/#sampledb.

Untuk contoh saya, saya akan menggunakan database world (~90k di-zip) yang berisi lebih dari
4000 records untuk bermain dengannya, tetapi keindahan dari skrip PHP yang akan kita buat adalah
bahwa itu dapat digunakan dengan database. Sekarang saya pikir kita semua bisa sepakat bahwa jika kita memutuskan
untuk tidak mem-paginasi hasil kita akan berakhir dengan beberapa hasil yang sangat panjang dan berat
seperti berikut:

example 2

(klik untuk ukuran penuh, gambar panjangnya menggila ~ 338k)

Jadi mari kita memecah data menjadi gigitan yang mudah untuk dicerna seperti ini:

example 3

Cantik bukan? Setelah Anda meletakkan kelas paginasi ke dalam kode, Anda dapat
dengan cepat dan mudah mengubah satu set besar data menjadi halaman yang mudah dinavigasi dengan
hanya beberapa baris kode. Sungguh.


3. Paginator

Contoh ini akan tersusun dari dua skrip, kelas paginator yang dapat digunakan kembali dan file indeks yang akan menampilkan tabel item dan kontrol.

Paginator.class.php

Kelas paginator hanya akan memiliki dua metode dan constructor, kami akan membangunnya secara bertahap menjelaskan setiap langkah seiring kita bergerak maju.

Definisi ini hanya mengatur variabel member yang diperlukan paginator, karena ini adalah sebuah kelas pembantu dan itu ditujukan untuk hanya paginasi, ia akan mengandalkan koneksi valid ke server MySQL dan query yang sudah didefinisikan dimana kita akan menambahkan parameter-parameter yang diperlukan untuk mempaginasi hasilnya. Kita akan memulai dengan metode constructor.


Cukup sederhana bukan? Metode ini hanya menetapkan objek dari koneksi database dan query yang diperlukan, setelah itu menghitung jumlah baris yang diambil oleh query yang tanpa batasan atau melewatkan parameter, jumlah ini adalah yang diperlukan untuk membuat link untuk paginator.

Perhatikan bahwa untuk kesederhanaan kita tidak melakukan pengecekan error atau validasi apapun dari parameter tertentu, tetapi dalam aplikasi dunia nyata cek ini akan diperlukan.

Mengambil Hasilnya

Sekarang mari kita membuat metode yang akan benar-benar mem-paginasi data dan mengembalikan hasilnya.

Mari kita menganalisis hal satu langkah pada satu waktu, pertama kita menetapkan parameter batas dan halaman, yang secara default adalah menetapkan 10 dan 1 masing-masing. Kita periksa jika pengguna membutuhkan jumlah baris atau semua dari mereka, berdasarkan ini dan parameter halaman kita menetapkan parameter LIMIT dari query, "- 1" dari halaman memperhitungkan fakta bahwa kita memulai halaman pada 1 bukan 0.

Setelah ini kita hanya mengevaluasi query dan mendapatkan hasil, akhirnya kami membuat objek hasil baru yang mengandung parameter batas, halaman dan total dari query yang dieksekusi serta data untuk setiap baris yang diperoleh.

Menampilkan Link Paginasi

Sekarang mari kita menulis metode yang digunakan untuk mendapatkan link paginasi.

Ini adalah metode yang agak panjang, sesuatu seperti 34 baris kode, jadi sekarang mari kita jelaskan apa yang terjadi di dalam metode ini.

  1. Pertama kita mengevaluasi jika pengguna membutuhkan sejumlah tertentu dari link atau semuanya, dalam kasus kedua kita hanya mengembalikan string kosong karena tidak ada paginasi yang diperlukan.
  2. Setelah ini kita menghitung halaman terakhir berdasarkan jumlah baris yang tersedia dan barang yang dibutuhkan per halaman.
  3. Kemudian kita mengambil parameter link yang mewakili jumlah link untuk ditampilkan di bawah dan di atas halaman saat ini dan menghitung link awal dan akhir yang dibuat.
  4. Sekarang kita membuat tag pembuka untuk daftar dan menetapkan kelas darinya dengan parameter kelas daftar dan menambahkan link "previous page", perhatikan bahwa untuk link ini kami memeriksa jika halaman saat ini halaman pertama, dan jika demikian, kita menetapkan properti disabled untuk link.
  5. Saat ini kami menampilkan link ke halaman pertama dan simbol elipsis pada kasus bahwa link awal bukanlah yang pertama.
  6. Selanjutnya kita menambahkan link di bawah dan di atas halaman saat ini didasarkan pada parameter awal dan akhir yang sebelumnya dihitung, dalam setiap langkah kami mengevaluasi halaman saat ini lagi link halaman yang ditampilkan dan menetapkan kelas active yang sesuai.
  7. Setelah ini, kami tampilan simbol ellipsis lainnya dan link ke halaman terakhir dalam kasus link akhir ini bukan yang terakhir.
  8. Akhirnya kami menampilkan link "next page" dan mengatur status disabled ketika pengguna melihat halaman terakhir, menutup daftar dan mengembalikan string HTML yang dihasilkan.

Itu semua ada untuk Paginator.class, tentu saja kita bisa menambahkan setter dan getter untuk koneksi database, batas, halaman, query dan jumlah parameter tapi untuk mudahnya, kita akan tetap seperti ini.

4. Index.php

Sekarang kita akan membuat file yang bertugas menggunakan kelas Paginator dan menampilkan data-data, jadi pertama-tama mari saya tunjukkan dasar HTML.

Cukup sederhana, file ini hanya menampilkan tabel yang akan kita isi dengan informasi yang diambil dari database, perhatikan bahwa untuk contoh ini saya menggunakan bootstrap untuk dasar styling halaman.

Menggunakan Paginator

Sekarang untuk menggunakan kelas Paginator kami tambahkan kode php berikut di bagian atas dokumen.

Skrip ini cukup sederhana, kami hanya meminta kelas Paginator, perhatikan bahwa kode ini menganggap bahwa file ini di direktori yang sama dengan file index.php, jika tidak Anda harus memperbarui path yang sesuai.

Kami membuat koneksi ke database kami menggunakan library MySQLi, mengambil parameter paginator dari permintaan GET dan menetapkan query, karena ini bukanlah sebuah artikel tentang MySQL atau apapun tentangnya, saya tidak akan masuk ke rincian tentang koneksi atau query yang digunakan di sini.

Akhirnya kami menciptakan objek Paginator dan mengambil hasil untuk halaman saat ini.

Menampilkan Hasilnya

Sekarang untuk menampilkan hasil yang diperoleh tambahkan kode berikut ke body tabel.

Di sini kami meng-iterasi dengan sederhana melalui hasil atribut data yang berisi records kota-kota dan membuat baris tabel untuk setiap salah satu dari mereka.

Link Paginasi

Sekarang untuk menampilkan link paginator menambahkan kode berikut di bawah tabel.

Untuk metode creatLinks dari Paginator kami menyampaikan parameter link yang diperoleh dan kelas css untuk link paginasi yang digunakan dari bootstrap. Berikut adalah hasil dari halaman yang diciptakan.

Kesimpulan

Ini seharusnya menyediakan Anda segala sesuatu yang Anda perlu tahu dalam rangka untuk bersiap dan berjalan dengan paginasi di aplikasi Anda.

Jangan ragu untuk meninggalkan pertanyaan, komentar, atau umpan balik umum dalam feed di bawah ini!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.