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
$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.

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
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..