怎么在ASP中判断复选框是否已被选中?

时间:2022-05-30 08:58:32

<%

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


引用 3 楼 phuai007 的回复:
既然是复选框,那么就每个框设置不同的name,然后逐一判断就是了


但是后台数据表是这么设计的,我不得不这么做。好人做到底,送佛送到西。帮帮忙。

#7


引用 5 楼 dogfish 的回复:
VBScript code
sql="insert into rightuser(rid,username, rname) select rid, '小明', rname from rights where rid=" &amp; cbox

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


引用 7 楼 qqm05 的回复:
引用 5 楼 dogfish 的回复:
VBScript code
sql="insert into rightuser(rid,username, rname) select rid, '小明', rname from rights where rid=" &amp;amp; cbox

5楼已经给出答案 了

VBScript code
<%

sql="select * f……


rname是动态的,此处的rname从何而来!

#9


引用 7 楼 qqm05 的回复:
引用 5 楼 dogfish 的回复:
VBScript code
sql="insert into rightuser(rid,username, rname) select rid, '小明', rname from rights where rid=" &amp;amp; cbox

5楼已经给出答案 了

VBScript code
<%

sql="select * f……

关注

#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


引用 3 楼 phuai007 的回复:
既然是复选框,那么就每个框设置不同的name,然后逐一判断就是了


但是后台数据表是这么设计的,我不得不这么做。好人做到底,送佛送到西。帮帮忙。

#7


引用 5 楼 dogfish 的回复:
VBScript code
sql="insert into rightuser(rid,username, rname) select rid, '小明', rname from rights where rid=" &amp; cbox

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


引用 7 楼 qqm05 的回复:
引用 5 楼 dogfish 的回复:
VBScript code
sql="insert into rightuser(rid,username, rname) select rid, '小明', rname from rights where rid=" &amp;amp; cbox

5楼已经给出答案 了

VBScript code
<%

sql="select * f……


rname是动态的,此处的rname从何而来!

#9


引用 7 楼 qqm05 的回复:
引用 5 楼 dogfish 的回复:
VBScript code
sql="insert into rightuser(rid,username, rname) select rid, '小明', rname from rights where rid=" &amp;amp; cbox

5楼已经给出答案 了

VBScript code
<%

sql="select * f……

关注

#10


你提问题应该把动态代码都去掉只留下脚本和HTML.因为大家都很忙,一般就是在查阅资料之余看到了你的问题,知道,遇见过的话,顺手就帮一把。但请不要把大家当老师,我们没有义务把你那种copy来的代码再看一遍,然后再根据你没有上下文的片段连蒙带猜补充完整,在搭建运行环境,跑通了再回答你。时间是宝贵的希望你以后在提问之前,把该做的都做好。