0

我有很多文本框。我想遍历列表元素并将它们的值发布到数据库中。我怎样才能在asp中做到这一点?

Set dataCon = Server.CreateObject("ADODB.Connection")
Set rsAwards = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM Awards"
rsAwards.Open strSQL, dataCon

<form name="sort_award" action="action_awards.asp?Action=sort&Award_ID=<%=Award_ID%>" method="post">

response.write "<ul id='sortable'>"
  dim i
  i=0

    While not rsAwards.EOF

      response.write "<li onclick='sort()'><input type='text' id='AwardNum' size='1' value="&i&" ></li>"

      rsAwards.MoveNext
      i=i+1

    Wend 
response.write "</ul></form>"
4

1 回答 1

1

可能的问题(不确定这些是实际问题还是只是修剪代码的产物):

  • 您的字段没有名称,因此它们没有返回任何值(在这方面 id 是无用的)。
  • ID 属性必须是唯一的;您不能对所有这些都使用“AwardNum”。
  • 您需要告诉表单要查找多少个字段。

 

<form action="action_awards.asp?Action=sort&Award_ID=<%=Award_ID%>" method="post">
<%
dim i
i=0
'... display stuff omitted
While not rsAwards.EOF
    '- only fields with names can return any data
    response.write "<input type='text' name='A_" & i & "'"
    '- id attributes must be unique
    response.write " id='AwardNum_" & i & "' size='1' value='" & i & "'>"
    rsAwards.MoveNext
    i=i+1
Wend 
'- tell the form how many fields there are
response.write "<input type='hidden' name='N' value='" & i & "'>"
'- (I assume you have a submit button or some other method to submit the data?)
%>
</form>

要阅读此表格,您需要执行以下操作:

dim N, V(), i
N = request.form("N")
redim V(N)
for i = 0 to N
    V(i) = request.form("A_" & i)
next

 

另一种选择是为所有字段提供相同的名称:

response.write "<input type='text' name='Award' value='" & i & "'>"

这将为您提供一个以逗号分隔的值列表,您可以使用Split()它们来划分它们。

V = Request.Form("Award")
V = Split(V,", ")
for i = 0 to UBound(V)
   if V(i) <> "" then '... do stuff ...
next

请注意,仅当可能的字段值 (a) 非常短且 (b) 永远不会包含逗号时,才建议使用此方法。所以它适用于复选框,但它可能不是处理文本输入字段的最佳方法,甚至不应该考虑用于 textareas。

于 2013-11-07T07:46:40.257 回答