读书人

checkbox数组传值并UPDATE数据库的有关

发布时间: 2012-02-17 17:50:41 作者: rapoo

checkbox数组传值并UPDATE数据库的问题
各位DX,小弟遇到个难题,请大家给点思路
有个页面如下:
<%set rs=server.createobject( "adodb.recordset ")
sql= "select * from PRODUCT "
rs.open sql,conn,1,1%>

<form name= "order " action=>
<tr bgcolor= "#FFFFFF ">
<td width= "44 " height= "40 " align=center> ITEM </td>
<td width= "45 " height= "40 " align=center> QTY </td>
<td width= "10 " height= "40 " align=center> </td> </tr>
<%do while not rs.eof%>
<tr>
<td width= "44 " height= "40 " align=center> <%=rs( "ITEM# ")%> </td>
<td width= "45 " height= "40 " align=center> <%=rs( "QTY ")%> </td>
<td width= "10 " height= "40 " align=center> <input type=checkbox> </td> </tr>
<%rs.movenext
loop%>
<tr> <td> <select size= "1 " name= "factory ">
<option value= " " selected> 选择制造商 </option>
<option value= "1 "> 1号工厂 </option>
<option value= "2 "> 2号工厂 </option>
<option value= "3 "> 3号工厂 </option> </select> </td>
<td> <input class= "hand " type= "submit " value= "出货 " </td> </tr>
</form>
该页面先将PRODUCT表中的产品记录循环读取出来

需要完成的功能是:通过选择产品项ITEM后的CHECKBOX,将数据库中PRODUCT表的制造商ORDER属性,UPDATE为SELECT下拉框中相应的制造商

不知道怎样读取多个checkbox的值,请大家帮帮忙,谢谢,分不够再开



[解决办法]
<input type=checkbox name= "ItemID " value= " <%=rs( "ID ")%> "> 通过Dim strIdsstrIds = Request.Form[ "ItemID "]得到一个字串,如 1,4,6,7然后sql = "Update Product set order = " & Request.Form[ "factory "] & " WHERE ID IN( " & strIds & ") "当然应该检查strIds和 Request.Form[ "factory "] 的合法性.
[解决办法]
<input type=checkbox name= "box1 " value= " <%=rs( "ITEM# ")%> ">

然后你在处理页面用 request( "box1 ") 就可以得到被选中的 ITEM#,它们是用逗号分隔的
[解决办法]
记下ID,然后写进数组,循环更新语句即可
[解决办法]
考虑下用select case value
end select
来实现读取

[解决办法]
<%set rs=server.createobject( "adodb.recordset ")


sql= "select * from PRODUCT "
rs.open sql,conn,1,1%>

<form name= "order " action=>
<tr bgcolor= "#FFFFFF ">
<td width= "44 " height= "40 " align=center> ITEM </td>
<td width= "45 " height= "40 " align=center> QTY </td>
<td width= "10 " height= "40 " align=center> </td> </tr>
<%do while not rs.eof%>
<tr>
<td width= "44 " height= "40 " align=center> <%=rs( "ITEM# ")%> </td>
<td width= "45 " height= "40 " align=center> <%=rs( "QTY ")%> </td>
<td width= "10 " height= "40 " align=center> <input type=checkbox name=item value= " <%=rs( "ITEM# ")%> "> </td> </tr>
<%rs.movenext
loop%>
<tr> <td> <select size= "1 " name= "factory ">
<option value= " " selected> 选择制造商 </option>
<option value= "1 "> 1号工厂 </option>
<option value= "2 "> 2号工厂 </option>
<option value= "3 "> 3号工厂 </option> </select> </td>
<td> <input class= "hand " type= "submit " value= "出货 "> </td> </tr>
</form>

将你的显示代码做部分改动
[解决办法]
给你讲讲 checkbox (多选框) 的工作原理吧

同一组checkbox 的name属性必须统一, 例如:

<form name= "form " method= "post " action= "test.asp ">
<input type= "checkbox " name= "box " value= "1 " />
<input type= "checkbox " name= "box " value= "2 " />
<input type= "checkbox " name= "box " value= "3 " />
<input type= "submit " name= "submit " value= "提交 " />
</form>

test.asp 用request 收集

<%
response.Write Request.Form( "box ")

%>

如果复选框全部选中 收集的结果是字符串 : 1, 2, 3
你自己测试一下


至于存储到数据库,要看你的字段是怎么设计的了
[解决办法]
大体的实现思路和代码如下:

str1=request( "你的checkbox的name "))
str2=request( "你加一个隐藏域,用于放你选择的厂家的值 ")
if not isempty(request( "你的checkbox的name ")) then
if instr(str1, ", ")> 0 then
arr1=split(str1, ", ")
arr2=split(str2, ", ")
for i=0 to ubound(arr1)
aa=cint(arr1(i))
sql = "Update Product set order=arr2(i) WHERE ID=arr1(i) "
next
else
aa=cint(str1)
sql = "Update Product set order= ' "&str2& " ' WHERE ID= "&str1& " "
end if
end if

读书人网 >ASP

热点推荐