角色权限管理系统(表结构设计和一级菜单显示)

在昨天的文章里已经介绍了第一张表,这个表存储的是用户信息,其中有一个role字段我没有强制性的弄成外键,它引用的是m_role表的id,下面就来介绍这个角色表

下面是表设计的截图

1.角色表

这个表也比较简单我就不说了

2.菜单表,这个表用来存储菜单信息包括对应的二级菜单,URL;其中一级菜单的parentmenu为-1,如果是其他值则表示子菜单此时parentmenu的值就是菜单表的主键

先来看表结构

下面是表数据

解释一下,这个表的意思是菜单管理下面有添加一级菜单和一级菜单管理,因为这2项的parentmenu为18,而18对应的是菜单管理,其他的以此类推。


3.下面是角色权限表,这其实是一个m_menu和m_role的中间表

下面是这个表对应的外键

到这里表的设计就结束了,形象思维好的程序员现在应该知道这几个表的逻辑关系了。后面的程序开发就围绕着几个表来展开


4.管理系统后台首页

首页其实用的就是一个frameset和一堆嵌套的frame,可以说好多经典的后台管理系统都是这个样子,上面是主菜单,下半部分有分左右两边,下半部分的左边是二级菜单也可以是树形菜单,右边就是内容页面,这个部分可以做增删改查一系列操作。给大家拉一个图看看


我的系统差不多也是这个样子,因为保密需要不方便在博客里面截图,后期我会上传我的整个项目大家可以下载了自己看


5.一级菜单的显示

显示一级菜单应根据用户的角色来显示,例如系统管理员可以看到所有菜单,其他管理员就只能看到部分,这里就要把m_role,m_menu,m_roleauth三个表做连接查询了

这里先给出控制器代码

function getMenuItem(){
	
	$smart=new Smarty();
	$smart->left_delimiter="<{";
	$smart->right_delimiter="}>";
	//查询用户对应的菜单
	$topImpl=new TopMenuManagerImpl();
	$arr=$topImpl->getMenuItem();
	
	$smart->assign("arr",$arr);
	$smart->assign("realname",$_SESSION["realname"]);
	$smart->display("top.tpl");
}

紧接着就是TopMenuManagerImpl里的getMenuItem了

//读取主菜单(后面需要改进)
	public function getMenuItem(){
		
		$role=$_SESSION["role"];
		$db=new DBUtil();
		$conn=$db->getConnection();
		$base=new BaseDBOperate();
		$sql="select B.* from m_roleauth A,m_menu B,m_role C where A.role=C.id and A.role=$role and A.menu=B.id";
		$arr=$base->query($sql,$conn);
		$db->close($conn);
		return $arr;
	}


下面是top.tpl模板页面



  





角色权限管理系统
你好,<{$realname}>   |   退出系统
<{foreach from=$arr item=message}> <{/foreach}>
<{$message.name}>     |    


这一块的难度在于sql语句的编写以及菜单表和角色权限表的数据库设计。对了顺便看看角色权限表的数据role为1的是系统管理员



你可能感兴趣的:(角色权限管理系统)