データの修正時の、ロジックについて質問があります。
1.データをデータベースから取り出し、フォームに表示させる。
2.データを修正し送信ボタンを押す。
3.データの入力チェック。
4.データに不正な値があれば、エラーを表示し、なければ、データベースを更新する。
4.のエラー表示のところなのですが、修正した値をフォームに表示させたまま、エラーメッセージを表示させるには、javascript等のクライアントサイドのスクリプトで、入力チェックを行うしかないでしょうか?
できれば、ASPのサーバーサイドで入力チェックを行いたいと考えております。ただ、フォーム内のvalue値に、データベースから、値を取得した時と、フォームから、値を取得した時(入力エラー時)と二つ設定しなくてはいけないと思うのですが、もっと、簡単にできるロジックはないでしょうか?
質問がわかりにくくてすみません・・・
うーん、おっしゃるとおり、2つ設定するロジックが必要となると思います。
フォーム内のValue値が存在する場合(キーとなるRequest.formの値が存在するか否か)でフォームの存在判定をし、存在すればその内容をつっこむ。なければSQLより取得する。
各Value値を個別に設定すれば、比較的簡単にできるのではないでしょうか。
test.aspのHTML部分:
>>
<form method=”post” action=”test.asp”>
<input type=”hidden” name=”postflg” value=”1”>
<input type=”text” name=”element1” value=”<%=element(1)%>
<input type=”text” name=”element2” value=”<%=element(2)%>
<input type=”text” name=”element3” value=”<%=element(3)%>
</form>
<<
test.aspのスクリプト部分:
>>
If Request.Form(”postflg”)<>”1” Then
’-- SQLから取得
strSQL=”SELECT ... FROM ... WHERE ...”
...
set rs = con.open(sql,1,0)
element(1) = rs.fields(”column1”).value
element(2) = rs.fields(”column2”).value
element(3) = rs.fields(”column3”).value
rs.close
con.close
Set con = Nothing
Else
’-- フォームから取得
elements(1) = server.HTMLEncode(Request.Form(”element1”))
elements(2) = server.HTMLEncode(Request.Form(”element2”))
elements(3) = server.HTMLEncode(Request.Form(”element3”))
End If
<<
Form入力値を再表示させるようなコーディングをする時は、クロスサイトスクリプティング脆弱性に注意です。
4.のときに、
■データに問題があれば、エラーメッセージとともに1.のフォームを再表示
■なければ更新し完了画面を表示、
のような流れではどうですか?
フォーム再表示するときには送信されてきた(不正な)値を、1.のフォームのValue値に書き込み、横にエラーメッセ-ジでも添える、というようなイメージです。
ありがとうございます。
参考になりました!
http://www.microsoft.com/japan/msdn/library/default.asp?url=/jap...
MSDN ライブラリ サイト移行に関する重要なお知らせ
ASPでサーバサイドの入力チェックを行うとしたら、おっしゃるとおり、自分でロジックを組む必要があると思います。
ASPではなく、ASP.NETではだめでしょうか?
ASP.NETのWebフォームを使うと非常に簡単に実現できると思うのですが。
ありがとうございます。
今回はaspなので・・・
ありがとうございます。
参考になりました!