Dynamic Sidebar Menu with AdminLTE

Dynamic Sidebar Menu with AdminLTE

Melanjutkan tutorial sebelumnya, setelah login kemudian kita buat menu yang ada di samping kiri AdminLTE. Tutorial sebelumnya :

Tabel yang akan kita gunakan cukup dengan satu tabel saja seperti berikut

DROP TABLE IF EXISTS `tbl_menu`;
CREATE TABLE IF NOT EXISTS `tbl_menu` (
  `menu_id` int(11) NOT NULL AUTO_INCREMENT,
  `menu_name` varchar(200) NOT NULL,
  `menu_link` text NOT NULL,
  `menu_level` int(11) DEFAULT NULL,
  `menu_parent` int(11) NOT NULL,
  `status` int(11) NOT NULL,
  `short` int(11) NOT NULL,
  `menu_icon` text NOT NULL,
  `menu_desc` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`menu_id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;

--
-- Dumping data for table `tbl_menu`
--

INSERT INTO `tbl_menu` (`menu_id`, `menu_name`, `menu_link`, `menu_level`, `menu_parent`, `status`, `short`, `menu_icon`, `menu_desc`) VALUES
(1, 'HOME', 'home', 1, 0, 1, 1, 'fa fa-file-text-o', 'm_home'),
(2, 'LEFT MENU', 'menu', 2, 0, 1, 2, 'fa fa-file-text-o', 'm_menu'),
(3, 'DATATABLES', 'datatables', 3, 0, 1, 3, 'fa fa-file-text-o', 'm_datatables'),
(4, 'CRUD', 'crud', 4, 0, 1, 4, 'fa fa-file-text-o', 'm_crud'),
(5, 'PRINT', 'print', 5, 0, 1, 5, 'fa fa-file-text-o', 'm_print'),
(6, 'UPLOAD', 'upload', 6, 0, 1, 6, 'fa fa-file-text-o', 'm_upload'),
(7, 'CRUD DENGAN FORM', 'crud/form', 4, 4, 1, 7, 'fa fa-circle-o', 'm_crud_form'),
(8, 'CRUD DENGAN eModal', 'crud/emodal', 4, 4, 1, 7, 'fa fa-circle-o', 'm_crud_emodal');

setelah menambahkan tabel diatas, tiba saatnya untuk membuat kode skrip dengan nama nav_left.php

Kode php tersebut nanti akan kita panggil pada header.php yang sudah kita buat sebelumnya pada artikel Login dengan jQuery, PHP + MySQL

<?php
$leftMenu = getAllMenu_byRole();

if(count($leftMenu) > 0)
{
	$refs = array();
	$list = array();
	
	$i=0;
	foreach($leftMenu as $leftMenu)
	{
		$thisref = &$refs[$leftMenu['menu_id']];
		$thisref['menu_parent'] = $leftMenu['menu_parent'];
		$thisref['menu_name'] = $leftMenu['menu_name'];
		$thisref['menu_link'] = $leftMenu['menu_link'];
		$thisref['menu_icon'] = $leftMenu['menu_icon'];
		$thisref['menu_desc'] = $leftMenu['menu_desc'];
		
		if($leftMenu['menu_parent'] == 0){
			$list[$leftMenu['menu_id']] = &$thisref;
		}
		else{
			$refs[$leftMenu['menu_parent']]['children'][$leftMenu['menu_id']] = &$thisref;
		}
		$i++;
	}
	function create_list($arr, $urutan)
	{
		if($urutan==0){
			$html = '';
		}
		else{
			$html = '<ul class="treeview-menu">';
		}
		foreach($arr as $key=>$v)
		{
			if(array_key_exists('children', $v)){
				$html .= '<li class="treeview '.$v['menu_desc'].'">';
				$html .= '<a href="#">
							<i class="'.$v['menu_icon'].'"></i> <span>'.$v['menu_name'].'</span>
							<span class="pull-right-container"><i class="fa fa-angle-left pull-right"></i></span>
						</a>';
				$html .= create_list($v['children'],1);
				$html .= "</li>";
			}
			else{
				if($urutan==0){
					$html .= '<li class="'.$v['menu_desc'].'"><a href="'.BASE_URL.$v['menu_link'].'"><i class="'.$v['menu_icon'].'"></i> <span>'.$v['menu_name'].'</span></a></li>';
				}
				else{
					$html .= '<li class="'.$v['menu_desc'].'"><a href="'.BASE_URL.$v['menu_link'].'"><i class="'.$v['menu_icon'].'"></i> '.$v['menu_name'].'</a></li>';
				}
			}
		}
		if($urutan==0){
			$html .= "";
		}
		else{
			$html .= "</ul>";
		}
		return $html;
	}
	echo create_list($list, 0);
}
?>

Terakhir buatkan function model mysqli dengan kode seperti berikut

function getAllMenu_byRole()
{	
	global $db_mysql;
		
	$result = $db_mysql->query("SELECT m.* FROM tbl_menu m WHERE 1 ORDER BY m.short ASC");
	return $result;
}

Jika semua sudah dilakukan, kemudian refresh halaman /home dan menu dynamic akan tampil seperti berikut

Dynamic Sidebar Menu with AdminLTE
dynamic left menu

Author Profile

Ricki K
Hi my name is Ricki, I am a blogger from Indonesia. Founder of erkamoo.com, Besides creating Web Applications, I also write about Blogging Tips and Tutorials on Programming, Databases, HTML.