fungsi rekursif untuk menampilkan tree menu bertingkat bisa cepat selesai. Nah, pada postingan kali ini saya akan mencoba untuk menerapkannya di CodeIgniter. Cekidot gan…
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.
1 | CREATE TABLE IF NOT EXISTS `tbl_menu` ( |
2 | `id_menu` int(11) NOT NULL AUTO_INCREMENT, |
3 | `id_parent` varchar(11) DEFAULT NULL, |
4 | `menu` varchar(50) NOT NULL, |
5 | PRIMARY KEY (`id_menu`) |
6 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ; |
8 | INSERT INTO `tbl_menu` (`id_menu`, `id_parent`, `menu`) VALUES |
12 | (4, '0' , 'Hubungi Kami' ), |
15 | (7, '2' , 'Struktur Organisasi' ), |
16 | (8, '2' , 'Sejarah Singkat' ), |
17 | (9, '3' , 'Kemahasiswaan' ), |
19 | (11, '3' , 'Kegiatan Tahunan' ), |
20 | (12, '10' , 'Lala Lele' ), |
21 | (13, '10' , 'Lala Karet' ), |
22 | (14, '10' , 'Lala Gabus' ), |
23 | (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 :
1 | class Rekursif_Menu extends CI_Controller { |
6 | $this ->load->database(); |
11 | echo $this ->menu(0, $h = "" ); |
14 | private function menu( $parent =0, $hasil ){ |
16 | $w = $this ->db->query( "SELECT * from tbl_menu where id_parent='" . $parent . "'" ); |
17 | if (( $w ->num_rows())>0) |
21 | foreach ( $w ->result() as $h ) |
24 | $hasil .= "<li>" . $h ->menu; |
25 | $hasil = $this ->menu( $h ->id_menu, $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
. 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
sumber : http://gedelumbung.com/tutorial-codeigniter-penerapan-rekursif-untuk-membuat-menu-bertingkat-di-codeigniter/