<%
sql="select * from rights"
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,1
if not rs.eof then
rights=rs.getrows()
end if
rs.close():set rs=nothing
sql="select * from rightuser where username='小明'"
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,1
do while not rs.eof
userrights=userrights & rs("rid") & ","
rs.movenext
loop
rs.close():set rs=nothing
%>
<style>
table{ width:100%; border-collapse:collapse; border-spacing:0;}
td{ border:1px solid red;}
</style>
<form action="" method="post" name="form1">
<table ><tr><td>用户</td><td>权限</td></tr>
<tr><td>李明</td>
<td>
<%userrights="," & userrights
for i=0 to ubound(rights,2)
%>
<input type="checkbox" name="cbox" value="<%=rights(0,i)%>" <%if instr(userrights,"," & rights(0,i) & ",")>0 then%>checked<%end if%>/><%=rights(1,i)%><input type="text" name="rtext" value="<%=rs("rname")%>"/>
<%
next
%></td>
</tr>
<tr><td><input type="hidden" value="1" name="flag"><input type="submit" value="修改权限"></td></tr>
</table>
</form>
<%
If request.form("flag")=1 Then'如果提交了表单
'获取表单数据
Dim cbox
cbox=Trim(request.form("cbox"))
'先删除用户所有权限,再插入选中的权限
sql="delete from rightuser where username='小明'"'清空该用户的权限
conn.execute(sql)
If cbox<>"" Then'有选中权限,则插入选中的权限
If InStr(cbox,",")>0 Then'当前选中多项
cbox=Split(cbox,",")
For i=0 To UBound(cbox)
sql="insert into rightuser(rid,username) values ("&cbox(i)&",'小明')"
conn.execute(sql)
next
Else'当前只选中一项
sql="insert into rightuser(rid,username) values ("&cbox&",'小明')"
conn.execute(sql)
End If
End If
End If
%>
以下是数据库表:
表名1:rights
字段:rid rname
rid rname
1 系统设置
2 登陆设置
3 人员管理
4 考勤管理
5 权限分配
6 数据管理
-----------------------------------------------------------------
表名2:rightuser
字段:ruid rid username
ruid rid rname username
1 3 人员管理 小张
2 1 系统设置 小明
3 6 数据管理 小王
4 3 人员管理 小明
5 4 考勤管理 小张
6 2 登陆管理 小明
现在要做的就是修改以上ASP代码,将已选中的rname也添加到rightuser表中。
10 个解决方案
#1
Request("cbox")是一组选中的,以,分隔的形式,自己Split就可以了
#2
问题没这么简单,你仔细看看代码。
#3
既然是复选框,那么就每个框设置不同的name,然后逐一判断就是了
#4
将已选中的rname也添加到rightuser表中,自认没有这个必要,有rid就足够了
#5
sql="insert into rightuser(rid,username, rname) select rid, '小明', rname from rights where rid=" & cbox
#6
但是后台数据表是这么设计的,我不得不这么做。好人做到底,送佛送到西。帮帮忙。
#7
5楼已经给出答案 了
<%
sql="select * from rights"
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,1
if not rs.eof then
rights=rs.getrows()
end if
rs.close():set rs=nothing
sql="select * from rightuser where username='小明'"
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,1
do while not rs.eof
userrights=userrights & rs("rid") & ","
rs.movenext
loop
rs.close():set rs=nothing
%>
<style>
table{ width:100%; border-collapse:collapse; border-spacing:0;}
td{ border:1px solid red;}
</style>
<form action="" method="post" name="form1">
<table ><tr><td>用户</td><td>权限</td></tr>
<tr><td>李明</td>
<td>
<%userrights="," & userrights
for i=0 to ubound(rights,2)
%>
<input type="checkbox" name="cbox" value="<%=rights(0,i)%>" <%if instr(userrights,"," & rights(0,i) & ",")>0 then%>checked<%end if%>/><%=rights(1,i)%>
<%
next
%></td>
</tr>
<tr><td><input type="hidden" value="1" name="flag"><input type="submit" value="修改权限"></td></tr>
</table>
</form>
<%
If request.form("flag")=1 Then'如果提交了表单
'获取表单数据
Dim cbox
cbox=Trim(request.form("cbox"))
'先删除用户所有权限,再插入选中的权限
sql="delete from rightuser where username='小明'"'清空该用户的权限
conn.execute(sql)
If cbox<>"" Then'有选中权限,则插入选中的权限
If InStr(cbox,",")>0 Then'当前选中多项
cbox=Split(cbox,",")
For i=0 To UBound(cbox)
'sql="insert into rightuser(rid,username) values ("&cbox(i)&",'小明')"
sql="insert into rightuser(rid,username,rname) select " &cbox(i) & ",'小明',rname from rights where rid=" & cbox(i)
conn.execute(sql)
next
Else'当前只选中一项
sql="insert into rightuser(rid,username,rname) select " &cbox & ",'小明',rname from rights where rid=" & cbox
' sql="insert into rightuser(rid,username) values ("&cbox&",'小明')"
conn.execute(sql)
End If
End If
End If
%>
#8
rname是动态的,此处的rname从何而来!
#9
关注
#10
你提问题应该把动态代码都去掉只留下脚本和HTML.因为大家都很忙,一般就是在查阅资料之余看到了你的问题,知道,遇见过的话,顺手就帮一把。但请不要把大家当老师,我们没有义务把你那种copy来的代码再看一遍,然后再根据你没有上下文的片段连蒙带猜补充完整,在搭建运行环境,跑通了再回答你。时间是宝贵的希望你以后在提问之前,把该做的都做好。
#1
Request("cbox")是一组选中的,以,分隔的形式,自己Split就可以了
#2
问题没这么简单,你仔细看看代码。
#3
既然是复选框,那么就每个框设置不同的name,然后逐一判断就是了
#4
将已选中的rname也添加到rightuser表中,自认没有这个必要,有rid就足够了
#5
sql="insert into rightuser(rid,username, rname) select rid, '小明', rname from rights where rid=" & cbox
#6
但是后台数据表是这么设计的,我不得不这么做。好人做到底,送佛送到西。帮帮忙。
#7
5楼已经给出答案 了
<%
sql="select * from rights"
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,1
if not rs.eof then
rights=rs.getrows()
end if
rs.close():set rs=nothing
sql="select * from rightuser where username='小明'"
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,1
do while not rs.eof
userrights=userrights & rs("rid") & ","
rs.movenext
loop
rs.close():set rs=nothing
%>
<style>
table{ width:100%; border-collapse:collapse; border-spacing:0;}
td{ border:1px solid red;}
</style>
<form action="" method="post" name="form1">
<table ><tr><td>用户</td><td>权限</td></tr>
<tr><td>李明</td>
<td>
<%userrights="," & userrights
for i=0 to ubound(rights,2)
%>
<input type="checkbox" name="cbox" value="<%=rights(0,i)%>" <%if instr(userrights,"," & rights(0,i) & ",")>0 then%>checked<%end if%>/><%=rights(1,i)%>
<%
next
%></td>
</tr>
<tr><td><input type="hidden" value="1" name="flag"><input type="submit" value="修改权限"></td></tr>
</table>
</form>
<%
If request.form("flag")=1 Then'如果提交了表单
'获取表单数据
Dim cbox
cbox=Trim(request.form("cbox"))
'先删除用户所有权限,再插入选中的权限
sql="delete from rightuser where username='小明'"'清空该用户的权限
conn.execute(sql)
If cbox<>"" Then'有选中权限,则插入选中的权限
If InStr(cbox,",")>0 Then'当前选中多项
cbox=Split(cbox,",")
For i=0 To UBound(cbox)
'sql="insert into rightuser(rid,username) values ("&cbox(i)&",'小明')"
sql="insert into rightuser(rid,username,rname) select " &cbox(i) & ",'小明',rname from rights where rid=" & cbox(i)
conn.execute(sql)
next
Else'当前只选中一项
sql="insert into rightuser(rid,username,rname) select " &cbox & ",'小明',rname from rights where rid=" & cbox
' sql="insert into rightuser(rid,username) values ("&cbox&",'小明')"
conn.execute(sql)
End If
End If
End If
%>
#8
rname是动态的,此处的rname从何而来!
#9
关注
#10
你提问题应该把动态代码都去掉只留下脚本和HTML.因为大家都很忙,一般就是在查阅资料之余看到了你的问题,知道,遇见过的话,顺手就帮一把。但请不要把大家当老师,我们没有义务把你那种copy来的代码再看一遍,然后再根据你没有上下文的片段连蒙带猜补充完整,在搭建运行环境,跑通了再回答你。时间是宝贵的希望你以后在提问之前,把该做的都做好。