Begadang lagi dan begadang lagi, itulah rutinitas saya beberapa minggu ini untuk menyelesaikan beberapa pekerjaan yang masih menumpuk. Dari yang biasanya begadang hanya sampai jam 3 pagi, kini beralih sampai jam 7 pagi (#haha) dan bangun jam 2 siang. Bisa dipastikan saya akhirnya sering bolos kuliah. Baru bangun nangkring depan laptop lagi sampai sore dan malamnya nangkring di ITSolution untuk bantu pak dosen garap penelitian. Nah, kebetulan teman-teman saya baru saja membuka sebuah cafe baru di depan ITSolution. Walaupun namanya cafe, tapi harganya sekelas mahasiswa lho. Lumayan untuk saya, gak perlu jauh-jauh lagi untuk berwisata kuliner di kala perut keroncongan ;). Nah…ngomong-ngomong soal penelitian, sekarang saya juga sedang membantu pak Eko di penelitian yang digagas oleh beliau dan kebetulan juga penelitian tersebut berhasil mendapatkan dana hibah. Topik penelitiannya masih seputar blog desa, yang benar-benar dibabat habis oleh kampus ketika KKN kemarin. Mungkin ini namanya rejeki, tuhan memang tidak membiarkan hambanya yang telah bekerja keras kemudian disakiti oleh orang lain begitu saja. Ada sesuatu yang selalu disiapkan oleh tuhan dari setiap perjuangan dan pengorbanan yang telah dilakukan oleh manusia.
Aplikasi blog desa yang baru ini dibangun menggunakan framework HMVC yang dikembangkan oleh pak Eko, monggo kunjungi blog beliau untuk mencoba framework yang diberi nama becak framework tersebut. Sebenarnya sama saja dengan framework codeigniter, cuma di becak framework secara default sudah menggunakan modularisasi (HMVC, Hierarchical Model View Controller). Kebetulan pada aplikasi blog desa yang baru ini menggunakan tree menu bertingkat yang dinamis dan ini bisa diselesaikan dengan fungsi rekursif. FYI, fungsi rekursif adalah sebuah fungsi yang memanggil dirinya sendiri di dalam function tersebut. Biasanya sih dulu saya gunakan untuk menyelesaikan soal faktorial. Ketika digunakan untuk di tree menu, scriptnya sama saja. Dengan sedikit tambahan untuk menghubungkannya dengan database, akhirnya fungsi rekursif untuk menampilkan tree menu bertingkat bisa cepat selesai. Nah, pada postingan kali ini saya akan mencoba untuk menerapkannya di CodeIgniter. Cekidot gan…
1. Kita siapkan dulu sebuah tabel menu dengan struktur parent child, artinya ada sebuah field yang dijadikan sebagai acuan parent-nya. Desain tabelnya hampir sama dengan postingan saya beberapa waktu lalu yang juga membahas tentang tree menu di CodeIgniter.
CREATE TABLE IF NOT EXISTS `tbl_menu` ( `id_menu` int(11) NOT NULL AUTO_INCREMENT, `id_parent` varchar(11) DEFAULT NULL, `menu` varchar(50) NOT NULL, PRIMARY KEY (`id_menu`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ; INSERT INTO `tbl_menu` (`id_menu`, `id_parent`, `menu`) VALUES (1, '0', 'Beranda'), (2, '0', 'Profil'), (3, '0', 'Galeri'), (4, '0', 'Hubungi Kami'), (5, '2', 'Visi'), (6, '2', 'Misi'), (7, '2', 'Struktur Organisasi'), (8, '2', 'Sejarah Singkat'), (9, '3', 'Kemahasiswaan'), (10, '3', 'Lembaga'), (11, '3', 'Kegiatan Tahunan'), (12, '10', 'Lala Lele'), (13, '10', 'Lala Karet'), (14, '10', 'Lala Gabus'), (15, '10', 'Lala Gosong');
2. Biar lebih cepat, saya disini tidak menggunakan model :). Query-nya langsung saya tulis di Controller saja. Buat sebuah controller dengan nama rekursif_menu.php dan ketikkan kode di bawah ini :
class Rekursif_Menu extends CI_Controller { function __construct() { parent::__construct(); $this->load->database(); } function index() { echo $this->menu(0,$h=""); } private function menu($parent=0,$hasil){ $w = $this->db->query("SELECT * from tbl_menu where id_parent='".$parent."'"); if(($w->num_rows())>0) { $hasil .= "<ul>"; } foreach($w->result() as $h) { $hasil .= "<li>".$h->menu; $hasil = $this->menu($h->id_menu,$hasil); $hasil .= "</li>"; } if(($w->num_rows)>0) { $hasil .= "</ul>"; } return $hasil; } }
3. Pada kode di atas, function menu dibuat private agar tidak bisa diakses dari url. Function menu dipanggil lagi saat perulangan untuk mengambil data dari database. Dengan begitu, kode rekursif di atas akan menghasilkan sebuah tree menu bertingkat tanpa batas.
Gampangkan cara menerapkan rekursif untuk membuat tree menu bertingkat di CodeIgniter…??? Kalau masih ada yang binggung dengan bagaimana alurnya sehingga bisa dihasilkan sebuah menu yang berulang-ulang dengan aturan yang sama, silahkan digambarkan terlebih dahulu, kemudian dipahami lagi :D. Saya biasanya menerapkan problem solving seperti itu, walaupun waktunya kurang efisien. OK deh, sekian dulu postingan saya kali ini. Semoga bermanfaat untuk kita semua.
Happy Blogging and Keep Coding
Cheerrrss….!!!!
wawww,, keep it up bos
makasih gan, titorialnya
untuk view nya mana mas..? kok gk ada hmm
makaish mas tutorialnya . .bermanfaat neeh. sukses gan !
kalo mau pake css gmna gan?
tinggal dimasukkan aja class css nya,,
coba cari contoh menu dropdown dengan css, masukkan class atau ID css’nya
Sip gan, terus view nya gimna gan? udah saya coba2 blm bisa gan. mksh sebelumnya
Mas, mo tanya:
Kalo mau dibuat di view gimana? Cara buat linknya?
Terima kasih..
maaf gan ini buat menu di bagian atas atau samping??
mas, kalau buat tree untuk bagan seperti struktur organisasi itu gimana ya? dengan CodeIgniter tentunya.. bisa nggak nerapin konsep diatas
LOL
viewnya mana gan?
komenan diatas juga yang nanya view gak di jawab :v
oh ternyata tidak menggunakan view…
berbeda dengan tutor di blog sebelah….
thanks dah gan tinggal masukin cssnya nih
Kalau mau ditampilkan di combo gimana om..?
#codeigniter