Apabila informasi dari suatu tabel hendak ditampilkan dalam suatu halaman web sangat banyak (lebih dari 30-40 baris), biasanya perlu diatur agar satu halaman tidak berisi semua baris tersebut. Mengingat penyajian informasi yang dibatasi dengan jumlah halaman tertentu dalam satu halaman seringkali dilibatkan dalam skrip-skrip yang hendak dibuat, akan lebih baik dikemas dalam sebuah pustaka. Sebagai implementasinya, dapat dibuat sebuah kelas bernama kelas_halaman. Kodenya adalah sebagai berikut dan simpan dengan file halaman.php.
Sebuah kelas terdirii atas dua komponen, yaitu properti dan fungsi. Properti adalah variabel-variabel dalam suatu kelas, sedangkan fungsi adalah suatu kumpulan kode yang digunakan untuk melaksanakan suatu tugas tertentu. Perlu diketahui, properti hanya dikenal dalam kelas, dan tidak dikenal di luar kelas. Jadi, bagian luar kelas, properti bersifat tersembunyi. Yang bisa mengakses properti hanyalah fungsi milik kelas tersebut.
Pada skrip halaman.php, kelas kelas_halaman mengandung properti :
<?php
class kelas_halaman
{
//properti
var $halaman_sekarang;
var $jumlah_data;
var $jumlah_halaman;
var $baris_per_halaman;
//konstruktor
function kelas_halaman($jum_baris_per_hal)
{
$this->baris_per_halaman = $jum_baris_per_hal;
$this->halaman_sekarang = $_GET['page'];
if (empty($this->halaman_sekarang))
$this->halaman_sekarang = 1;
}
function tentukan_total_baris($jumlah)
{
$this->jumlah_data = $jumlah;
$this->jumlah_halaman = ceil($jumlah / $this->baris_per_halaman);
}
function peroleh_awal_record()
{
$awal_record = ($this->halaman_sekarang - 1) * $this->baris_per_halaman;
return $awal_record;
}
function tampilkan_link_halaman()
{
if ($this->jumlah_halaman > 1)
{
print("Halaman : ");
for ($hal = 1; $hal <= $this->jumlah_halaman; $hal++)
{
if ($hal == $this->halaman_sekarang)
echo "$hal |";
else
{
$nama_skrip = $_SERVER['PHP_SELF'];
echo "<a href=\"$nama_skrip?page=$hal\"" .
">$hal</a> |\n";
}
}
}
}
}
?>
Pada skrip halaman.php, kelas kelas_halaman mengandung properti :
- $halaman_sekarang
- $jumlah_data
- $jumlah_halaman
- $baris_per_halaman
- kelas_halaman()
- tentukan_total_baris()
- peroleh_record_awal()
- tampilkan_link_halaman()
Konstuktor kelas_halaman() berfungsi untuk menentukan jumlah baris dari halaman. Kodnya adalah sebagai berikut :
Fungsi ini memiliki sebuah parameter (argumen), yaitu :
$jum_baris_per_hal
Kode :
yang dipakai untuk mengisikan nilai yang terdapat pada
$jum_baris_per_hal ke properti $baris_per_halaman
Namun, perlu diketahui, penggunaan $this-> digunakan untuk mempertegas bahwa yang disebutkan setelah -> adalah properti dalam kelas.
Kode
dipakai untuk memperoleh nilai yang dilewatkan dari skrip melalui metode GET, kemudian diberikan ke properti $halaman_sekarang. Dalam hal ini, nilai yang diambil adalah nilai dari variabel bernama page. Jad, $_GET['page'] berarti isi dari variabel page yang dilewatkan melalui metode GET.
function kelas_halaman($jum_baris_per_hal)
{
$this->baris_per_halaman = $jum_baris_per_hal;
$this->halaman_sekarang = $_GET['page'];
if (empty($this->halaman_sekarang))
$this->halaman_sekarang = 1;
}
$jum_baris_per_hal
Kode :
$this->baris_per_halaman = $jum_baris_per_hal;
$jum_baris_per_hal ke properti $baris_per_halaman
Namun, perlu diketahui, penggunaan $this-> digunakan untuk mempertegas bahwa yang disebutkan setelah -> adalah properti dalam kelas.
Kode
$this->halaman_sekarang = $_GET['page'];
Selanjutnya, kode
digunakan untuk menentukan halaman sekarang adalah 1, sekiranya pada pengisian melalui $_GET[] ternyata properti $halaman_sekarang tidak berisi apa-apa alias kosong. Sekedar diketahui, fungsi empty() menghasilkan nilai benar jika argumennya berupa nilai kosong atau nilai tidak benar (FALSE).
Fungsi tentukan _total_baris() digunakan untuk menentukan jumlah baris keseluruhan yang akan disajikan. Kodenya sebaga berikut :
Nilai argumen $jumlah diberikan ke properti $jumlah_data melalui perintah
Adapun kode berikutnya digunakan untuk menentukan jumlah halaman. Nilainya disimpan di properti $jumlah_halaman.
Fungsi peroleh_awal_record() menghasilkan nomor awal record yang akan ditampilkan. Kodenya :
Nomor awal record dihitung melalui nilai dalam properti $halaman_sekarang dan $baris_per_halaman. Pernyataan return digunakan untuk memberikan nilai balik fungsi (nilai yang dapat ditangkap oleh pemanggilnya).
Fungsi tampilkan_link_halaman() digunakan untuk menampilkan link-link nomor halaman, yang nanti bisa diklik oleh pemakai. Kodenya adalah sebagai berikut :
if (empty($this->halaman_sekarang))
$this->halaman_sekarang = 1;
Fungsi tentukan _total_baris() digunakan untuk menentukan jumlah baris keseluruhan yang akan disajikan. Kodenya sebaga berikut :
function tentukan_total_baris($jumlah)
{
$this->jumlah_data =$jumlah;
$this->jumlah_halaman=
ceil($jumlah / $this->baris_per_halaman);
}
$this->jumlah_data =$jumlah;
Fungsi peroleh_awal_record() menghasilkan nomor awal record yang akan ditampilkan. Kodenya :
function peroleh_awal_record()
{
$awal_record = ($this->halaman_sekarang - 1) *
$this->baris_per_halaman;
return $awal_record;
}
Fungsi tampilkan_link_halaman() digunakan untuk menampilkan link-link nomor halaman, yang nanti bisa diklik oleh pemakai. Kodenya adalah sebagai berikut :
function tampilkan_link_halaman()
{
if ($this->jumlah_halaman > 1)
{
print('Halaman : ");
for ($hal = 1; $hal <= $this->jumlah_halaman; $hal++)
{
if ($hal == $this->halaman_sekarang)
echo "$hal |";
else
{
$nama_skrip = $_SERVER['PHP_SELF'];
echo "<a href=\"$nama_skrip?page=$hal\"" .">$hal</a> |\n";
}
}
}
}
- Mula-mula tulisan "Halaman : "ditampilkan dulu
- Kemudian, nomor-nomor halaman ditampilkan melalui pernyataan for.
for ($hal = 1; $hal <= $this->jumlah_halaman; $hal++)
digunakan untuk memproses bagian yang mengikuti for (dalam hal ini yang terletak dalam { dan } yang berada tepat dibawahnya) dimulai dari variabel $hal bernilai 1 hingga isi $hal bernilai sama dengan isi properti $jumlah_halaman. Kode $hal++ digunakan untuk menaikkan isi variabel $hal sebesar 1 setiap kali bagian { } yang mengikuti for telah diproses. Jadi, kalau $jumlah_halaman misalnya berisi 3, $hal akan berisi 1,2, dan terakhir adalah 3. Pada masing-masing nilai tersebut bagian yang berada dalam { } dieksekusi.
Kode
if ($hal == $this->halaman_sekarang)
echo "$hal |";
else
{
$nama_skrip = $_SERVER['PHP_SELF'];
echo "<a href=\"$nama_skrip?page=$hal\"" .">$hal</a> |\n";
}
digunakan untuk mengatur isi $hal diikuti dengan | kalau nilai $hal sama dengan isi properti $halaman_sekarang. Namun, kalau $hal dan $halaman_sekarang tidak sama maka :
- Variabel $nama_skrip diisi dengan nama skrip yang sedang berjalan (diperoleh melalui $_SERVER['PHP_SELF'])
- Link ke halaman dibentuk melalui echo (echo adalah alternatif dari print). Deretan <a> hingga </a> adalah tag HTML yang akan dipakai untuk menangani link (koneksi ke skrip lain).
Sekarang akan dicoba pemanfaatan kelas yang terdapat pada halaman.php. Skripnya adalah sebagai berikut, bagian yang dicetak tebal adalah tambahan terhadap skrip sebelumnya dan simpan file dengan nama teshal.php.
<html>
<head>
<title>Menampilkan Data Per Halaman</title>
</head>
<body>
<?php
require_once "halaman.php";
$per_halaman = 20;
$halaman = new kelas_halaman($per_halaman);
$server = "127.0.0.1";
$pemakai = "userphp";
$password = "php123";
$id_mysql = mysql_connect($server, $pemakai, $password);
if (! $id_mysql)
die ("Tidak dapat melakukan koneksi ke server MySQL");
$kepegawaian = mysql_select_db("kepegawaian", $id_mysql);
if (! $kepegawaian)
die ("Tak dapat mengakses database kepegawaian");
//Bagian untuk menampilkan data
$sql ="SELECT nip, nama, tgl_lahir, jenis_kelamin, alamat FROM pegawai";
$hasil = mysql_query($sql, $id_mysql);
$jum_baris = mysql_num_rows($hasil);
$halaman->tentukan_total_baris($jum_baris);
$awal_record = $halaman->peroleh_awal_record();
$sql ="SELECT nip, nama, tgl_lahir, jenis_kelamin, alamat FROM pegawai " .
"LIMIT $awal_record, $per_halaman";
$hasil = mysql_query($sql, $id_mysql);
$nomor = $awal_record;
print("<table width = \"80%\" border=\"1\">\n");
print("<tr>\n");
print("<td width=\"10%\">No</td>\n");
print("<td width=\"15%\">NIP</td>\n");
print("<td width=\"30%\">Nama</td>\n");
print("<td width=\"20%\">Tanggal Lahir</td>\n");
print("<td width=\"10%\">Jenis Kelamin</td>\n");
print("<td width=\"40%\">Alamat</td>\n");
print("</tr>\n");
while ($baris = mysql_fetch_row($hasil))
{
$nomor++;
$nip = $baris[0];
$nama = $baris[1];
$tgl_lahir = $baris[2];
$jenis_kelamin = $baris[3];
$alamat = $baris[4];
print("<tr>\n");
print("<td>$nomor</td>\n");
print("<td>$nip</td>\n");
print("<td>$nama</td>\n");
print("<td>$tgl_lahir</td>\n");
print("<td>$jenis_kelamin</td>\n");
print("<td>$alamat</td>\n");
}
print("</table>\n");
mysql_close($id_mysql);
//Tampilkan link halaman
$halaman->tampilkan_link_halaman();
?>
</body>
</html>
require_once "halaman.php";Pernyataan pertama digunakan untuk menyertakan skrip halaman.php, yang berisi kelas yang dibahas diawal tulisan. Pernyataan kedua digunakan untuk menentukan jumlah baris per halaman. Selanjutnya objek berkelas kelas_halaman diciptakan melalui new. Perhatikan bahwa variabel yang mencatat jumlah halaman dilewatkan dalam tanda(). Objek yang terbentuk akan direferensi atau diacu oleh variabel $halaman. Melalui variabel $halaman inilah, bjek dapat diproses lebih lanjut.
$per_halaman = 20;
$halaman = new kelas_halaman($per_halaman);
Kode berikutnya,
$jum_baris = mysql_num_rows($hasil);
berguna untuk mendapatkan jumlah baris dari perintah SQL yang telah dieksekusi. Jumlah baris kemudian diberikan untuk memberitahukan ke objek mengenai jumlah baris keseluruhan.
$halaman->tentukan_total_baris($jum_baris);Perhatikan, untuk memanggil fungsi milik objek (yang didefinisikan dalam kelas) diperlukan tanda ->
Selanjutnya
$awal_record = $halaman->peroleh_awal_record();digunakan untuk mendapatkan awal record untuk halaman sekarang. Hasilnya dicatat pada variabel $awal_record.
Kode
$sql ="SELECT nip, nama, tgl_lahir, jenis_kelamin, alamat FROM pegawai " .
"LIMIT $awal_record, $per_halaman";
$hasil = mysql_query($sql, $id_mysql);
Agar nomor yang akan ditampilkan dalam tabel sesuai dengan halaman yang dikehendaki pemakai, maka isi $nomor perlu diatur melalui
$nomor = $awal_record;Kode terakhir yang ditambahkan dalam skrip adalah
$halaman->tampilkan_link_halaman();Dengan pemanggilan seperti itu, link halaman dapat ditampilkan seperti berikut ini :
Juga bisa dicoba meletakkan petunjuk mouse ke link halaman 2 dan perhatikan nilai dari linknya.
0 Comments