フォームに入力したデータを受け取るには
HTMLの<form>・・・</form>タグ内に配置した、テキストボックス、ラジオボタン、チェックボックス、ドロップダウンリストなどに入力したデータをResponseオブジェクトのFormコレクションから受け取る方法を説明します。
|
Request.Form(element)[(index) | .Count] or Request.Form(index) | .Count |
elementには、HTMLのフォームに配置したエレメント名(HTMLタグのname=に記述した名称)を指定します。elementは省略することができます。indexは、フォームコレクション、エレメントコレクションから要素番号を指定してエレメントの値を取得するときに使用します。.Countプロパティは、フォームコレクション、エレメントコレクションの要素数を返します。
Request.Form.Count
Request.Form(index)
Request.Form(“elementName”).Count
Request.Form(“elementName”)(index)
● テキストボックスに入力したデータを受け取るには(その1)
フォームのテキストボックスに入力したデータを受け取るには2種類の方法があります。HTMLの<form>タグにmethod=”get”を指定したときは、Request.QueryStringコレクションを使用します。method=”post”を指定したときは、Request.Formコレクションを使用します。ここでは、Request.Formコレクションを使用してフォームのテキストボックスに入力したデータを受け取る方法を説明します。
|
|
図 テキストボックスに入力したデータを受け取るには(その1)のサンプル
Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「テキストボックス(固有名称指定)」をクリックしてください。Internet Explorerの左側のフレームには、ASPのソースが表示されます。右側のフレームにはフォームが表示されますので、氏名のテキストボックスに”
図のASPの行22では、Request.Formコレクションでフォームのすべてのエレメント名+値を取得しています。送信ボタンをクリックしたときには、Formコレクションに以下の内容が格納されています。(参考までに、Request.Formコレクションには、URLEncodeされたデータが格納されています。Decodeされたデータを取得するには、Request.Formコレクションにエレメント名を指定します。)
Request.Form è txtName=Kasai+Akio&txtEmail=akio@accweb.com
行24-27では、Request.Formコレクションにエレメント名txtName, txtEmailを指定してテキストボックスに入力した氏名とメールアドレスを取得して表示させています。
response.write("氏名:<b>" & request.form("txtName") & "</b><br>")
è氏名:
response.write("メール:<b>" & request.form("txtEmail") & "</b><br>")
èメール:akio@accweb.com
Tip
|
フォームに入力されたデータをfor…nextループで取得するには: Request.Formコレクションの内容をfor each…nextループで処理するには、以下のように記述します。変数strNameには、エレメント名が格納されます。Response.Writeでは、エレメント名と値をブラウザに送信しています。 for each strName
in request.form response.write(strName & "=>" & request.form(strName) & "<br>") next Request.Formコレクションからインデックスを使用して値を取得することもできます。この場合、for…nextループを使用します。Response.Writeでは、インデックス番号とエレメント値をブラウザに表示させています。 for intI = 1 to request.form.count response.write(cstr(intI) & "==>" & request.form(intI) & "<br>") next |
● テキストボックスに入力したデータを受け取るには(その2)
Request.Formコレクションを使用してフォームのテキストボックスに入力したデータを受け取る方法を説明します。ここでは、<input type=”text”>タグのname=に同一の名称を指定します。Request.Formのエレメントコレクションのインデックスを指定してテキストボックスの値を取得します。
<input type=”text” name=”elementName”>
<input type=”text” name=”elementName”>
<input type=”text” name=”elementName”>
Request.Form(“elementName”)(index)
|
|
図 テキストボックスに入力したデータを受け取るには(その2)のサンプル
Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「テキストボックス(同じ名称指定)」をクリックしてください。Internet Explorerの左側のフレームには、ASPのソースが表示されます。右側のフレームにはフォームが表示されますので、氏名のテキストボックスに”
ASPの行15-17のテキストボックスには、name=に同一名”txt”が指定されています。行25では、Request.Formコレクションにエレメント名(“txt”)を指定してCountプロパティでエレメント数を取得して変数intCountに保存しています。行26-29のfor…nextループでは、Request.Form(“txt”)コレクションにインデックス番号を指定してエレメントの値を取得して、Response.Writeでブラウザに送信しています。
response.write("txt(" & intI & "):<b>" _
& request.form("txt")(intI) & "</b><br>")
ètxt(1):
ètxt(2):03-9999-9999
ètxt(3):akio@accweb.com
Request.Formでは、フォームのコレクションとエレメントのコレクション双方にインデックスを指定することができます。
Request.Form(index) ‘ フォームのコレクションにインデックス指定
Request.Form(“elementName”)(index) ‘ エレメントのコレクションにインデックス指定
● テキストエリアに入力したデータを取得するには
Request.Formコレクションを使用してフォームのテキストエリアに入力したデータを受け取る方法を説明します。HTMLの<textarea>・・・</textarea>タグで定義した入力領域に改行コード(CR+LF)が含まれるデータを入力するとRequest.Formで取得したデータにも改行コードが含まれます。このデータをResponse.Writeでブラウザに送信すると、改行コードが無視されます。改行コードを有効にするには、HTMLの<br>タグに置換する必要があります。
|
|
図 テキストエリアに入力したデータを受け取るサンプル
Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「テキストエリア」をクリックしてください。Internet Explorerの左側のフレームには、ASPのソースが表示されます。右側のフレームにはフォームが表示されますので、プロフィールのテキストエリアに”ここに入力した・・・”を入力します。なお、テキストエリアに入力したデータは改行(CR+LF)して3行のデータとして入力します。送信ボタンをクリックすると<form>タグのaction=で指定したASPファイルがロードされます。(このサンプルでは、自分自身TextArea.aspを指定しています。)
図のASPの行30-32にAddBR()関数が定義されています。この関数は、行36から呼ばれます。行34では、Request.Formコレクションにエレメント名”txt”を指定してエレメント値を調べています。テキストエリアにデータを入力したときは、行35-36を実行します。行36では、Request.Form(“txt”)で取得したテキストエリアのデータをAddBR()関数に渡しています。AddBR()は、VBScriptのReplace()関数でvbCrLfを<br>に置換しています。テキストエリアに入力されたデータをそのままResponse.Writeメソッドでブラウザに送信するとCrLfが無視されて改行されません。ブラウザ上で改行させるには、CrLfをHTMLの<br>タグに置換する必要があります。
Request.Form(“txt”)で取得したデータをServer.URLEncodeすると、データのCrLfが表示されます。たとえば、サンプルのプロフィールに1改行2改行3改行を入力してServer.URLEncodeすると以下のようなデータが表示されます。
response.write("<br>URLEncode:" _
& server.URLEncode(request.form("txt")))
è URLEncode:1%0D%0A2%0D%0A3%0D%0A
%0D è CR, %0A è LFの意味です
● ラジオボタンから選択した値を取得するには
ラジオボタンから選択した値を取得する方法を説明します。HTMLの<input type=”radio”>タグでラジオボタンを定義するとき、name=には同一名を指定します。この場合、Request.Formコレクションにエレメント名を指定して値を取得するとラジオボタンをクリックした方の値が返ってきます。
<input type="radio" value="value1" name="elementName">Label1
<input type="radio" value="value2" name="elementName">Label2
|
|
図 ラジオボタンの値を取得するサンプル
Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「ラジオボタン」をクリックしてください。Internet Explorerの左側のフレームには、ASPのソースが表示されます。右側のフレームにはフォームが表示されますので、性別のラジオボタンから”男”をクリックして送信ボタンをクリックします。送信ボタンをクリックすると<form>タグのaction=で指定したASPファイルがロードされます。(このサンプルでは、自分自身InputRadio.aspを指定しています。)
行21-22の<input type=”radio”>タグのname=には、同一名”Gender”を指定しています。
<input type="radio" value="男" name="Gender">男
<input type="radio" value="女" name="Gender">女
行29では、ラジオボタンをクリックしたかどうか調べています。クリックしたときは、行30-31を実行します。Request.Form(“Gender”)には、クリックした方の値”男”が返されます。
response.write("あなたが選択した性別は<b> " _
& request.form("Gender") & " </b>です!")
èあなたが選択した性別は 男 です!
● チェックボックスから選択した値を取得するには
チェックボックスから選択した値を取得する方法を説明します。HTMLの<input type=”checkbox”>タグでチェックボックスを定義するとき、name=には同一名を指定します。この場合、Request.Formコレクションにエレメント名を指定して値を取得するとチェックボックスをクリックした値がコンマ区切りで返ってきます。
<input type="checkbox" value="value1" name="elementName">Label1
<input type="checkbox" value="value2" name="elementName">Label2
<input type="checkbox" value="value3" name="elementName">Label3
|
|
図 チェックボックスを選択した値を取得するには
Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「チェックボックス」をクリックしてください。Internet Explorerの左側のフレームには、ASPのソースが表示されます。右側のフレームにはフォームが表示されますので、趣味のチェックボックスから”読書”と”音楽”をクリックして送信ボタンをクリックします。送信ボタンをクリックすると<form>タグのaction=で指定したASPファイルがロードされます。(このサンプルでは、自分自身InputCheckbox.aspを指定しています。)
行21-23の<input type=”checkbox”>タグのname=には、同一名”Interest”を指定しています。
<input type="checkbox" value="読書" name="Interest">読書
<input type="checkbox" value="音楽" name="Interest">音楽
<input type="checkbox" value="スポーツ" name="Interest">スポーツ
行32では、チェックボックスをクリックしたかどうか調べています。クリックしたときは、行33-41を実行します。Request.Form(“Interest”)には、クリックしたチェックボックスの値がコンマ区切りで返されます。
response.write("あなたの趣味は<b> " _
& request.form("Interest") & " </b>です!<br><br>")
èあなたの趣味は 読書, 音楽 です!
行38-41のfor…nextループでは、Request.Form(“Interest”)のエレメントコレクションからインデックス番号を指定して値を取得しています。Request.Form(“Interest”)のエレメントコレクションには、チェックボックスをクリックしたエレメント値のみ含まれます。
response.write("Interest(" & intI & "):<b> " _
& request.form("Interest")(intI) & "</b><br>")
èInterest(1): 読書
èInterest(2): 音楽
Tip
|
Request.Formで取得したコンマ区切りのデータを配列変数に変換するには: VBScriptのSplit()関数を使用すると、Request.Formコレクションで取得したコンマ区切りのデータを配列変数に格納してfor…nextループで処理することができます。 dim intI dim aInterest aInterest = split(request.form("Interest"),",") for intI = lbound(aInterest) to ubound(aInterest) response.write("Interest(" & intI & "):" & aInterest(intI) & "<br>") next |
● ドロップダウンリストから選択した単一アイテムを取得するには
ドロップダウンリストは、HTMLの<select>・・・</select>タグで定義します。<select>タグにsize=”1”を指定すると、コンボボックス型(1アイテムのみ常時表示されます)のドロップダウンリストになります。size=に”1”以上を指定すると、リストボックス型(複数アイテムが常時表示されます)のドロップダウンリストになります。
<select name=”ComboBox” size=”1”>
<option value=”value1”>Item1</option>
<option value=”value2”>Item2</option>
</select>
<select name=”ListBox” size=”2”>
<option value=”value1”>Item1</option>
<option value=”value2”>Item2</option>
</select>
|
|
図 ドロップダウンリストから選択した単一アイテムを取得するサンプル
Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「ドロップダウンリスト(単一アイテムのみ選択可能)」をクリックしてください。Internet Explorerの左側のフレームには、ASPのソースが表示されます。右側のフレームには、フォームが表示されます。
ASPソースの行21の<select>タグには、size=”1”が指定されていますので、コンボボックス型のドロップダウンリストが表示されます。
<select name="Age" size="1">
ドロップダウンリストから”20代”を選択して送信ボタンをクリックします。送信ボタンをクリックすると行18の<form>タグのaction=で指定したASPファイルをロードします。(このサンプルでは、自分自身SelectOption.aspを指定しています。)
<form action="SelectOption.asp" method="post">
行36では、ドロップダウンリストから年齢が選択されたか調べています。Request.Form(“Age”).Countプロパティでは、ドロップダウンリストから選択したアイテムの個数が取得できます。<select size=”1”>のときは、Countプロパティの最大値は1になります。
request.form("Age").count è 0 or 1
Countプロパティが0以上のときは、行37-38を実行します。Response.Writeでは、Request.Form(“Age”)で取得した値をブラウザに送信しています。Request.Form(“Age”)には、<option>タグのvalue=で指定した値が返されます。
response.write("あなたの年齢は<b> " _
& request.form("Age") & "代 </b>です!")
èあなたの年齢は 20代 です!
● ドロップダウンリストから選択した複数アイテムを取得するには
ドロップダウンリストは、HTMLの<select>・・・</select>タグで定義します。<select>タグにmultipleを指定すると、ドロップダウンリストから複数のアイテムを選択することができます。(複数アイテムを選択するには、[Ctrl]キーを押しながらマウスでアイテムをクリックします。)multipleを指定するとsize=に関係なくリストボックス型(複数アイテムが常時表示されます)のドロップダウンリストになります。
<select name=”ListBox” multiple>
<option value=”value1”>Item1</option>
<option value=”value2”>Item2</option>
</select>
|
|
図 ドロップダウンリストから選択した複数アイテムを取得するサンプル
Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「ドロップダウンリスト(複数アイテム選択可能)」をクリックしてください。Internet Explorerの左側のフレームには、ASPのソースが表示されます。右側のフレームには、フォームが表示されます。
ASPソースの行21の<select>タグには、multipleが指定されていますので、複数アイテム選択することができます。また、multipleを指定したときは、常にリストボックス型のドロップダウンリストが表示されます。
<select name="Fruits" multiple>
ドロップダウンリストから”リンゴ”、”バナナ”、”ブドウ”を選択して