Header Tabel yang Sortable dan Paging Tabel

druid's picture

Tabel pada module Demo Sistem Informasi sudah lebih canggih. Jika header tabel di-klik, data pada tabel akan otomatis diurutkan sesuai field header yang di-klik. Tabel juga memiliki fasilitas Paging, bermanfaat untuk membatasi jumlah data yang tampil sehingga tabel tidak terlalu panjang, dan user dapat klik di navigasi paging untuk langsung loncat ke halaman tertentu. Kedua fitur ini biasanya digunakan bersamaan, jadi sekalian dalam artikel ini saya jelaskan keduanya.

Silakan dicermati source code Demo Sistem Informasi.

1. Header Tabel Sortable

Definisi header tabel yang biasanya simpel harus diupgrade sehingga mendeskripsikan judul tabel sekaligus nama field yang sesuai. Definisi header menjadi seperti berikut:

$header = array(
array('data'=>'No', 'width'=>'10px'),
array('data'=>'Nama Lengkap', 'field'=>'nama', 'sort'=>'asc'),
array('data'=>'Kota', 'field'=>'kota'),
array('data'=>'Jenis Kelamin', 'field'=>'kelamin'),
array('data'=>'Aksi'),
);

Dari definisi tersebut, header field yang dapat di-klik hanya: Nama Lengkap, Kota dan Jenis Kelamin. Jangan sampai salah menuliskan asosiasi field-nya, pastikan sama dengan nama field yang ada di tabel dqs_demo.

Kemudian untuk membuat sorting tabel berfungsi, kita harus menambahkan satu baris berikut. Jangan sampai terlupa baris ini, pastikan menggunakan nama variabel yang konsisten, dalam contoh ini adalah: $tablesort

$tablesort = tablesort_sql($header); 

Fungsi ini akan mengkonversi header tabel yang kita klik menjadi kalimat SQL yang sesuai. Variabel ini akan digunakan dalam fungsi paging.

2. Paging

Setup paging mungkin sedikit rumit (wajar lah, kan sudah level Intermediate), tapi bisa lebih mudah dengan mengadopsi (copy paste bo..) struktur kode yang ada di source-code.

Seperti biasa, buat SQL untuk menampilkan data yang diinginkan:

$sql = "SELECT id, nama, kota, kelamin
FROM dqs_demo ";

Nah, berikutnya adalah bagian yang penting. Drupal sering salah dalam membuat navigasi paging, apalagi kalau SQL nya kompleks. Oleh karena itu, kita harus memberi tahu Drupal berapa total data yang tampil.

$sql_count = "SELECT count(id) as jml
FROM dqs_demo ";

Nah semua ini kemudian digabungkan kedalam fungsi pager. Perhatikan bahwa fungsi pager ini menggantikan fungsi db_query(). Berapa jumlah maksimal data per halaman dapat diset pada variabel $limit. Lebih ciamik ini tidak di-hardcode, tapi dapat disetting pada halaman konfigurasi module. Kapan-kapan saya tulis cara membuat halaman konfigurasi modul Smiling

$limit = 2;
$res = pager_query($sql . $tablesort, $limit, 0, $sql_count);

Kode berikutnya adalah opsional, untuk memastikan urutan nomor benar sesuai halaman yang aktif.

$page = $_GET['page'];
if (isset($page)) {
$no = $page * $limit;
} else {
$no = 0;
} 

Kode terakhir, adalah untuk menampilkan navigasi paging yang sudah dibuat Drupal. Gunakan kode berikut:

$output .= theme('pager', NULL, $limit, 0);

Selesai! Semoga cukup jelas ya... Referensi fungsi Drupal lebih detail silakan googling aja ya... Jika ada yang belum jelas, jangan ragu ditanyakan. Smiling


Comments

Maz klo misalnya bwt

Maz klo misalnya bwt kolomnya berdasarkan row gmn?
Misalny :
Nama : ....
Alamat : ...
Saya coba fungsi arraynya diganti row tp ga bisa Frown

ada contoh tabel seperti apa

ada contoh tabel seperti apa yang ingin dibuat?

Tabel Vertical dlm Form

Maksudnya mas? Saya liat script yg dqs_demo.module (demo sistem informasi) dan bentuk tabelnya kan horizontal, kyk gini kan.. 

Id | Nama  |  Kelamin  | Kota
 1  |  text    | text         | text 

Mkasud saya buatnya menurun (vertical)

Id          | (text field)
Nama     | (texfield)
Kelamin  | (radio button)
Kota      | ( text list)

Karena nama fieldnya dalam database banyak, klo dibuat mendatar kolomnya kecil bgt, mepet2 sampe ga kliatan isi fieldnya..
Saya liat di scriptnya mgkn krna fungsi array ...
Nah saya coba ganti pake 'row' (krn di php funngsinya mysql_fetch_row trs deskripsikan row 1, row 2 dst tp ga bisa hehe..)

Minta pencerahannya lagi mas hehe..
Oh iya, mau tau fungsi2 dalam membuat modul drupal itu darimana ya maz..

Untuk kesekian kalinya makasih banyak maz Druid..


Tutorial Module Drupal 6

Memenuhi harapan dari member, sekarang seluruh tutorial DQS sudah kompatibel dengan Drupal 6. Klik disini untuk detailnya.

Promo Hosting Ekstra!

Reseller Hosting Indonesia sedang ada promo Ekstra Disk Space (tambahan 1GB-3GB) dan Ekstra Sewa Hosting (tambahan 1-3 bulan sewa gratis). Jangan lewatkan kesempatan ini, diskon 20% bagi member DQS juga tetap berlaku.

Rekan yang berminat gunakan form Kontak Kami, pilih kategori Hosting.

Live Buddies

There are currently 1 user and 2 guests online.

DQS Members

  • Registered Users: 315

Partners

GrowUrl.com - growing your website