注册 登录
编程论坛 ASP技术论坛

请问如何把checkbox参数用作sql语句中的查询要求啊????

who_young 发布于 2011-02-23 11:36, 1032 次点击
想了很久没想出来...

这是前台代码,本想是通过checkbox把要分成一组的学生学号传递到后台,然后作为sql语句IN(...)的查询匹配条件,用的数据库是SQLSERVER2000的

但是checkbox传递过去的参数是字符串...比如 “1,5,9,6,87,...0” 这样

而数据库中的字段是int型,所以总是不匹配...

能把checkbox的参数全部变成int的啊?试过了Cint 不行...

然后试过了用数组还是不行...

哪位知道的朋友指点一下吧,小生感激不尽了!!
<form action="admin_array_check.asp" method="post">
                <input type="submit" value="分组">
                <table>
                    <tr>
                        <td>学号</td>
                        <td>学生姓名</td>
                    </tr>
                    <% do while not rs.eof %>
                    <tr>
                        <td><input type="checkbox" name="check" value="<%= rs("sid")%>"><%= rs("sn")%></td>
                        <td><%= rs("name")%></td>
                    </tr>
                    <%
                        rs.movenext
                        loop
                        
                        rs.close
                        set rs=nothing
                    %>
              </table>
 </form>




后台的代码:

<body>
    <%
        dim checknum
        checknum = request.Form("check")
        
        
        dim chk(9)
            for i=0 to UBound(split(checknum,","))
            chk(i)=Cint(split(checknum,",")(i))
        next
        
        
        
        set rs=Server.CreateObject("ADODB.Recordset")'有参数
        sql="select * from student where sid IN("&chk(0),chk(1),chk(2),chk(3),chk(4),chk(5)&")"
        rs.open sql,conn,2,3
    %>
    <div>
    <form action="admin_array_back.asp" method="post">
        请确认小组成员<br />
        <textarea name="members" rows="100">
            <%
                do while not rs.eof
                    
                    response.Write(rs("name"))

                rs.movenext
                loop
            %>
        </textarea>
        <br />
        请输入小组名称
        <br />
        <input type="text" name="group_name" />
        
        <input type="submit" value="确认分组">
        
    </form>
    </div>

</body>



5 回复
#2
hams2011-02-23 14:49
不难呀,关键是你要清楚这个思路,
一步步来实现
比如,接收到的数据如何整理
再把整理的数据去查询
#3
tandezhong2011-02-23 15:25
回复 楼主 who_young
只有本站会员才能查看附件,请 登录


只有本站会员才能查看附件,请 登录


只有本站会员才能查看附件,请 登录


这是我写的删除..    希望对你有帮助..

[ 本帖最后由 tandezhong 于 2011-2-23 15:27 编辑 ]
#4
gupiao1752011-02-23 17:29
<form action="b.asp?act=cha" method="post">
                <input type="submit" value="查询">
                <table>
                    <tr>
                        <td>学号</td>
                        <td>学生姓名</td>
                    </tr>
                    <% For i=1 To 3  %>
                    <tr>
                        <td><input type="checkbox" name="check" value="a<%=i%>"></td>
                        <td>查询参数<%=i%></td>
                    </tr>
                    <%
                    next
                    %>
              </table>
</form>

<%
If request.querystring("act")="cha" Then
  check=request.Form("check")//返回一个选择了几个的checkbox的值的字符串,中间用,分割!
  arr=Split(check,",")
For i=0 To UBound(arr)
response.write "您选择的checkbox,第"&i&"个的值是"&arr(i)&"<br/>"
next
End if
%>

参照一下这个代码,其实按照3楼的也是可以的。当然有的时候如果我们不一定需要通过数据库的话,就像上面这样就可以了!
#5
gupiao1752011-02-23 18:25
楼主的后台代码可以按照如下进行修改:
<body>
    <%
        dim checknum
        checknum = request.Form("check")
        set rs=Server.CreateObject("ADODB.Recordset")
        sql="select * from student where sid in ("&check&")"
        rs.open sql,conn,1,1
    %>
    <div>
    <form action="admin_array_back.asp" method="post">
        请确认小组成员<br />
        <textarea name="members" rows="100">
            <%
                do while not rs.eof
                    
                    response.Write  rs("name")

                rs.movenext
                loop
            %>
        </textarea>
        <br />
        请输入小组名称
        <br />
        <input type="text" name="group_name" />
        
        <input type="submit" value="确认分组">
        
    </form>
    </div>

</body>
#6
rongguo520142012-02-24 09:50
要是传递的类型是文本类型char的呢?
1