• 网站权限管理 之 人员角色管理


    公司或网站的正常运行,离不开管理员对各个员工的合理分配,那先看看权限管理中的角色管理好了:

    要更改用户的角色,那么先来理一下思路:

    (1)用户现在是什么角色?

    (2)用户将要成为什么角色?

    (3)怎样更改用户的角色?

    首先会用到的三张表:user表,userinjs表,juese表

     

    第一步:遍历输出所有的用户

                 <h2>更改用户角色</h2>
    		<!--将所有员工遍历出来-->
    		<p>员工列表:</p>
    		<select id="user">   <!--此处用id,和value进行传值-->
    			<?php
    				require "../DB.class.php";
    				$db = new DB();
    				$sql = "select * from users";
    				$arr = $db->query($sql);
    				foreach($arr as $v)
    				{
    					echo "<option value= '{$v[0]}'>{$v[2]}</optiop>";
    				}				
    			?>			
    		</select><br />
    

      这样可以实现如下效果:

                                                 

     

    第二步:将所有权限遍历输出

                 <!--从数据库读取角色-->
    		<p>员工角色:</p>
    		<?php
    			$sql2 = "select * from juese ";
    			$arr2 = $db->query($sql2);
    			foreach($arr2 as $n)
    			{
    				echo "<input type='checkbox' class='ck' value='{$n[0]}'/>{$n[1]}";
    			}			
    			?>	<br />
    

     效果图如下:

                           

     

     

    第三步:当点击某用户时,显示他现在的角色

    (1)

    $("#user").change(function(){	
    var uid = $("#user").val();
    	$.ajax({
    		url:"chuli.php",
    		data:{uid:uid},
    		type:"POST",
    		dataType:"TEXT",
    		success:function(data){
    //			alert(data);
    			//用strquery类返回的,所以此处先拆分字符串
    			var jsid = data.trim().split("|");
    //			alert(jsid);			
    			//取所有的复选框(属于jQuery对象)
    			var ck = $(".ck"); 			
    			//清一下复选框的状态,jquery 支持这样全部清除;如果不清除状态,上次选中的会影响此次结果
    			  ck.prop("checked",false);
                 for(var i=0;i<ck.length;i++)
                 {  
                 	//.eq()取到的是dom对象
                 	var v= ck.eq(i).val();  
                 	//判断v是否在返回的jsid中
    //           	alert(jsid.indexOf(v)>=0);
                 	
                 	if(jsid.indexOf(v)>=0)
                 	{   
                 		//如果存在,则选中
                 		ck.eq(i).prop("checked",true);
                 	}            	
                 }
    		}
    	})	
    })		
    

     这样,点击李四,显示李四的角色;点击王五,显示王五的角色

    但是 ,这样会有bug,当刷新页面时,会如下图一样,没有默认值,那该怎么办呢?----封装函数,在刷新的时候调用一下

     (2)封装后

    <script type="text/javascript">
    	sel();//页面刷新调用
    $("#user").change(function(){	
     	sel();//下拉选框变化调用
    })
    
    //封装函数
    function sel(){
    	var uid = $("#user").val();
    	$.ajax({
    		url:"chuli.php",
    		data:{uid:uid},
    		type:"POST",
    		dataType:"TEXT",
    		success:function(data){
    			var jsid = data.trim().split("|");
    			var ck = $(".ck"); 			
    
    			  ck.prop("checked",false);
                 for(var i=0;i<ck.length;i++)
                 {  
                
                 	var v= ck.eq(i).val();  
                 	
                 	if(jsid.indexOf(v)>=0)
                 	{   
    
                 		ck.eq(i).prop("checked",true);
                 	}            	
                 }
    		}
    	})				
    }
    
    </script>
    

     

    第四步:更改用户角色,点击“确认更改”完成更改

    (1)添加“确认更改”按钮

    	<input type="button" value="确认更改" id="qr"/>
    

    (2)代码

    //更改角色
    $("#qr").click(function(){
    
    	var uid = $("#user").val();
    
    	//造一个空字符串,将选中的复选框拼成字符串,用逗号分隔
    	var str = "";
    	var ck = $(".ck");
    	for(var i=0; i<ck.length;i++)
    	{
    		if (ck.eq(i).prop("checked"))
    		{
    			str = str+ck.eq(i).val()+",";
    		}
    	}
    	
    	//拼完的字符串会多一个逗号,用截取字符串的方法去逗号
    	str = str.substr(0,str.length-1);	
    	alert(str);
    	$.ajax({
    		url:"del-add.php",
    		data:{uid:uid,jsid:str},
    		type:"POST",
    		dataType:"TEXT",
    		success: function(data){
    			alert("保存成功!");
    		}
    	});	
    })
    

      这样就可以实现更改角色的功能了,那么来看一下效果:

    更改前的页面和数据库:

        

    更改后页面的数据库:

     

     最后:chuli.php页面和del-add.php页面

    chuli.php

    <?php
    $uid =$_POST["uid"];
    require "../DB.class.php";
    $db = new DB();
    $sql = "select jsid from userinjs where uid='{$uid}'";
    echo $db->strquery($sql);
    ?>
    

      

    del-add.php:

    <?php
    $uid = $_POST["uid"];
    $jsid = $_POST["jsid"];
    require "../DB.class.php";
    $db = new DB();
    //清空原有角色
    $sql = "delete from userinjs where uid='{$uid}'";
    $db->query($sql,0);
    //添加选中的角色
    $jsid = explode(",",$jsid);
    foreach($jsid as $v)
    {
    	$sql = "insert into userinjs values('','{$uid}','{$v}')";
    	$db->query($sql,0);
    }
    ?>
    

     

    简单的角色管理就实现了~~~离第二阶段项目又近了~~~

     

     

     

     

     

  • 相关阅读:
    MySQL 5.7 在windows下修改max_allowed_packet变量
    linux(redhat)安装jdk1.8
    linux安装jdk1.8之后报错Error: dl failure on line 893的解决办法
    Java中List Set Map 是否有序等总结
    面试题吐槽系列之一
    面试算法——快速排序
    推荐系统——online(上)
    推荐系统架构
    零基础开始推荐系统
    视觉显著性优秀硕士论文总结
  • 原文地址:https://www.cnblogs.com/chenguanai/p/6893842.html
Copyright © 2020-2023  润新知