Membuat Tampilan Data Terurut Berdasarkan Kolom Tabel
January 13th, 2010 | by rosihanari |
Cetak Artikel Ini
Waduh.. lama tidak menyapa pengunjung setia blog ini melalui sharing ilmunya ya? Maaf ya karena alasan kesibukan di kantor dan mengerjakan beberapa project pribadi, blog ini lama gak diupdate dengan artikel-artikel terbaru.
OK deh, saya kali ini akan membahas bagaimana cara membuat tampilan data terurut berdasarkan kolom tabel. Agak bingung juga nulis judul artikel ini. Tapi… secara garis besar maksudnya sebagaimana tampak pada gambar di bawah ini.

Andaikan kita punya data dalam database, kemudian kita ingin menampilkan data-data tersebut ke dalam halaman web seperti di atas. Dalam studi kasus ini, saya gunakan data mahasiswa. Nah.. secara default data yang tampil dalam tabel di atas akan terurut berdasarkan NIM nya. Tidak hanya NIM saja yang bisa digunakan sebagai dasar pengurutan data, namun juga field yang lain misalnya NAMA, ALAMAT, JENIS KELAMIN atau bahkan TANGGAL LAHIR nya. Untuk mengurutkan data yang tampil berdasarkan field tertentu cukup dengan mengklik nama kolomnya saja.
Perhatikan gambar berikut ini yang menunjukkan tampilan data apabila diklik pada kolom NAMA MHS (diurutkan berdasarkan nama mahasiswa)

Demikian pula gambar berikut ini yang menunjukkan tampilan data bila diklik pada kolom TANGGAL LAHIR (diurutkan berdasarkan tanggal lahir)

OK… paham ya maksudnya membuat tampilan data terurut berdasarkan kolom tabel?
Now… akan saya jelaskan cara membuatnya. Pertama, tentu saja kita harus sudah memiliki data yang mau ditampilkan dahulu. Di sini saya menggunakan tabel ‘mahasiswa’ dengan struktur sbb:
CREATE TABLE `mahasiswa` ( `nim` varchar(5), `nama` varchar(20), `alamat` text, `sex` varchar(1), `tgllahir` date, PRIMARY KEY (`nim`) );
serta beberapa buah data sebagai sampelnya.
INSERT INTO `mahasiswa` VALUES ('M0001', 'A', 'SOLO', 'L', '1979-10-20');
INSERT INTO `mahasiswa` VALUES ('M0003', 'B', 'BANDUNG', 'P', '1980-11-07');
INSERT INTO `mahasiswa` VALUES ('M0002', 'D', 'SOLO', 'L', '1981-10-12');
INSERT INTO `mahasiswa` VALUES ('M0004', 'C', 'JAKARTA', 'P', '1980-09-18');
OK sekarang kita masuk ke tahap berikutnya yaitu proses membuat scriptnya. Seperti biasa sebelum kita mulai membuat script, kita harus punya konsep atau ide penyelesaiannya dahulu. Konsepnya adalah kita gunakan statement IF atau kondisional. Why? ya… karena tampilan datanya juga kondisional atau bersyarat. Mengapa bersyarat? OK.. ini dia alasannya. Kapan tampilan data yang muncul terurut berdasarkan NAMA? ya… ketika kolom NAMA MHS nya diklik mas? OK.. benar.. trus, kapan tampilan data yang muncul terurut berdasarkan TANGGAL LAHIR nya? ketika kolom TANGGAL LAHIR nya diklik donk? that’s right!!
Nah.. secara umum, ketika kolom NIM diklik maka script akan menjalankan query berikut ini untuk menampilkan datanya
SELECT * FROM mahasiswa ORDER BY nim
Sedangkan bila kolom NAMA MHS diklik, maka query yang dijalankan adalah
SELECT * FROM mahasiswa ORDER BY nama
Bila kolom ALAMAT diklik, maka query yang dijalankan adalah
SELECT * FROM mahasiswa ORDER BY alamat
Begitu seterusnya..
OK.. konsep dan ide dah dapat, so… kita bisa action sekarang. Ini dia scriptnya.
<h1>Data Mahasiswa</h1>
<!-- membuat kolom tabel dan link pengurutan -->
<!-- perhatikan parameter by=... -->
<table border="1">
<tr><th><a href="<?php $_SERVER['PHP_SELF']?>?by=nim">NIM</a></th><th><a href="<?php $_SERVER['PHP_SELF']?>?by=nama">Nama Mhs</a></th><th><a href="<?php $_SERVER['PHP_SELF']?>?by=alamat">Alamat</a></th><th><a href="<?php $_SERVER['PHP_SELF']?>?by=sex">Jenis Kelamin</a></th><th><a href="<?php $_SERVER['PHP_SELF']?>?by=tgl">Tgl Lahir</a></th></tr>
<?php
// koneksi ke mysql
mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");
// jika yang diklik kolom NIM
if ($_GET['by'] == "nim") $orderBy = "nim";
// jika yang diklik kolom NAMA MHS
else if ($_GET['by'] == "nama") $orderBy = "nama";
// jika yang diklik kolom ALAMAT
else if ($_GET['by'] == "alamat") $orderBy = "alamat";
// jika yang diklik kolom JENIS KELAMIN
else if ($_GET['by'] == "sex") $orderBy = "sex";
// jika yang diklik kolom TANGGAL LAHIR
else if ($_GET['by'] == "tgl") $orderBy = "tgllahir";
// jika tidak ada yang diklik (default)
else $orderBy = "nim";
// query untuk menampilkan data berdasarkan field yang terurut
// sesuai pilihan di atas
$query = "SELECT * FROM mahasiswa ORDER BY ".$orderBy;
$hasil = mysql_query($query);
while ($data = mysql_fetch_array($hasil))
{
// tampilkan data
echo "<tr><td>".$data['nim']."</td><td>".$data['nama']."</td><td>".$data['alamat']."</td><td>".$data['sex']."</td><td>".$data['tgllahir']."</td></tr>";
}
?>
</table>
Catatan:
Perhatikan script di atas, bahwa untuk mendeteksi bahwa kolom apa yang diklik digunakanlah $_GET['by'] untuk membaca nilai parameter yang ada di setiap link nama kolomnya.
Yes!! Mudah bukan membuat script PHP untuk tampilan data terurut berdasarkan kolom tabel? Nah… silakan bereksperiman dan mengembangkan scriptnya sendiri ya. Mungkin Anda bisa tambahkan beberapa fitur tambahan misalnya sortingnya secara ASCENDING atau DESCENDING. OK.. selamat mencoba.
Anda ingin mendownload beberapa tool programming 100% gratis?
Silakan download di FREE PROGRAMMING TOOLS.
atau ingin berdonasi untuk pengembangan blog ini cukup dengan $1 via Paypal?
Beberapa artikel terkait
- Membuat Script PHP untuk Rekap Data dari Data Mentah
- Script PHP untuk Menampilkan Data dalam Tabel dengan Warna Baris Selang-seling
- Script PHP untuk Menghapus Data Via Panel di Tabel
- Cara Cepat Merestrukturisasi Tabel dan Data
- Membuat Script PHP Import Data MS. Excel Ke MySQL
- Script PHP untuk Arsip Artikel Berdasarkan Bulan dan Tahun
- Script PHP untuk Mengedit Data Via Form
- Membuat Script PHP Untuk Report atau Rekap Data (2)
- Cara Membuat Query SQL Untuk Relasi Tabel
- Mengetahui Kinerja Script PHP Berdasarkan Waktu Eksekusi
Share this article on:
Kata kunci: pengurutan data - php mysql script - script php - script sorting data - sorting script -





Salam kenal mas
terima kasih mas atas infonya.saya baru punya blog nich tolong di bimbing donk caranya biar menarik kaya punya mas.
Selamat pagi Pak..
senang bisa baca update baru web Pak Rosihanary, jangan bosen update meski cuma 4-5 alinea.
Akhirnya… ada ilmu lagi yg dishare, hehehe
Terimakasih banyak pa Ari, insyaAlloh sangat bermanfaat.
btw, kl di samping judul kolom bisa ada tanda panah ke atas/bawah (sbg tanda sdg dlm keadaan sort ascending/descending) itu bagaimana yah Pa?
salam
kok gak kepikiran gitu ya ….
makasih pak, kudu sinau mempeng ki ben pinter….
@sahl: itu buat sendiri mas tanda panahnya. Nanti konsepnya hampir sama, yaitu pake IF juga seperti di atas.
saya ngelihatnya masih bingung nih pake
Harus dibaca berulang
Pak Klu bikin store procedure gimana ya?
makasih sharing nya pak. menambah pemahaman saya
Thank’s for tips nya
Pak, koq ada error seperti ini:
———————————————-
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\kolomon.php on line 32
———————————————-
@budhi: sepertinya ada yang salah di mysql_fetch_array(). Di dalam kurungnya itu gak boleh kosong atau NULL variabel mas..
Terima kasih atas tanggapannya, ternyata tadi ada script yg saya salah ketik.
nanya lagi, boleh dong..
bagaimana membuat interface :
“dbhost”, “dbuser”, “dbpass”,”dbname” pada beberapa textbox yang diisi user, jadi bukan pada file.php nya..
maaf, saya benar-benar pemula di php programming.
@budhi: itu nanti pakai operasi file mas.. Konsepnya sama seperti yang pernah saya bahas di http://blog.rosihanari.net/edit-file-css-berbasis-file-teks-dengan-php cuman di situ tampilan demonya hilang
Mas, Bagaimana klu pengurutannya berdasarkan nama hari??
Gimana codingnya??
Aq tunggu blsannya d email aq ya..thx
@tri laniri: nama hari kan terurut bukan karena struktur stringnya mbak? seperti halnya Ani, Budi, Cici, Dodi, dst… tapi urutan hari itu sudah fixed: senin, selasa, rabu dst… sehingga untuk sorting nama hari ini, Anda mesti buat field satu lagi yang isinya bilangan bulat. Jika hari pada data tsb senin, maka kasih saja angka 0, selasa angka 1, rabu angka 2, dst… lalu baru anda bisa sort berdasarkan field tsb.
muantab Sob
assalamualaikum…saya dari malaysia..jiran kita pak guru … blog ni mmg menarik..dan isinya mantap … terima kasih di atas kesudian dalam sharing ilmu pak guru…:-)…harap bisa udpdate lagi..
kalau trigger/bolak-balik bisa ga pak???
maksudnya kalau judul table itu diklik sekali maka data akan terurut secara ascending, lalu diklik lagi sekali maka data akan terurut secara descending, itu kira2 scripting-nya bagaimana…
@andika sanjaya: wah belum ada ide nih mas… kalo dah ada idenya, judul yang tepat untuk artikel tsb apa yah?
mas, sy mu tanya…
gmn ya caranya mengurutkan tabel, tapi berdasarkan hasil perhitungan yang masih dalam program, jadi tidak mengubah database??
mohon bantuannya..
makasih sebelumnya..
@asep yudi: anda bisa simpan data hasil perhitungannya ke dalam variabel array, lalu lakukan sorting pada data array tersebut. http://blog.rosihanari.net/beberapa-function-sorting-di-php