概念理解:
一般用于多对多的关系,用户对应角色表和角色对应职责表,设置该用户对应的角色,设置该角色对应的职责;
设置用户->角色表的权限:
主页面:
<!--功能1:设置权限--> <div> <form action="tjchuli.php" method="post"> 请选择用户: <select id="u" name="uid"> <?php include ("../config/DBDA.php"); $dx=new DBDA(); $sql="select * from user"; $attr=$dx->Query($sql); foreach($attr as $v) { echo "<option value='{$v[0]}'>{$v[1]}</option>"; } ?> </select> <br /> 请选择角色: <?php $sq="select * from juese"; $att=$dx->Query($sq); foreach($att as $v1) { echo "<input type='checkbox' class='jid' name='jid[]' value='{$v1[0]}' />{$v1[1]}"; } ?> <br /> <input type="submit" value="保存" /> </form> </div>
//功能2:如何实现每次返回主页面和每次更改用户时出现上一次的显示结果 //思路:根据本次的用户名查到相应的角色,使复选框变为选中状态 //使用工具:jquery/ajax <script type="text/javascript"> $(document).ready(function(e) { Checked();//页面初始化调用此方法 $("#u").change(function(){ Checked();//用户名更改调用此方法 }) //封装一个方法->功能2 function Checked(){ var uid=$("#u").val(); //alert(uid);
//清除原来的选中状态 $(".jid").prop("checked",false);
$.ajax({ url:"chaxun.php", data:{uid:uid}, type:"POST", dataType:"TEXT",//获取到另一个页面的返回值,另一个页面必须有值 success: function(data){ //选取所有的复选框,一个个判断是否在返回的数组中 var ar=data.split("|"); //alert(data); var m=$(".jid"); for(var i=0;i<m.length;i++) { if($.inArray(m.eq(i).val(),ar)>=0) //$.inArray(value,array)方法用于判断某个元素在不在数组中,如果在返回所在位置的索引,不在返回-1 { m[i].checked="checked"; //m.eq(i).prop("checked",true); } } } }) } }); </script>
向数据库添加数据的处理页面:
<?php include ("../config/DBDA.php"); $uid=$_POST["uid"]; $jttr=$_POST["jid"];//要获取到数组,传值为name='a[]' $dx=new DBDA(); //去重 $sq="delete from udj where uid={$uid}"; $dx->Query($sq,0); //循环添加数据 foreach($jttr as $v) { $sql="insert into udj (uid,jid) values({$uid},{$v})"; $r=$dx->Query($sql,0); } if($r) { header("location:szqx.php"); } else { echo "设置失败"; } ?>
使用ajax转入查询的页面:
<?php include ("../config/DBDA.php"); $uid=$_POST["uid"]; $dx=new DBDA(); $sql="select jid from udj where uid={$uid}"; $result=$dx->StrQuery($sql); echo $result;//必须输出才能返回到ajax中
No Excuse~