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

 

もう 1 つのオプションは、すべてのフィールドに同じ名前を付けることです。

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) コンマが含まれない場合にのみ推奨されることに注意してください。したがって、チェックボックスでは機能しますが、おそらくテキスト入力フィールドを処理する最良の方法ではなく、テキストエリアについても考慮する必要はありません。

于 2013-11-07T07:46:40.257 に答える