フォームに入力したデータを受け取るには

 

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のソースが表示されます。右側のフレームにはフォームが表示されますので、氏名のテキストボックスにKasai Akio、メールのテキストボックスに”akio@accweb.com”を入力します。送信ボタンをクリックすると<form>タグのaction=で指定したASPファイルがロードされます。(このサンプルでは、自分自身InputText.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>")

è氏名:Kasai Akio

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のソースが表示されます。右側のフレームにはフォームが表示されますので、氏名のテキストボックスにKasai Akio、電話のテキストボックスに”03-9999-9999”、メールのテキストボックスに”akio@accweb.com”を入力します。送信ボタンをクリックすると<form>タグのaction=で指定したASPファイルがロードされます。(このサンプルでは、自分自身InputText2.aspを指定しています。)

 

ASPの行15-17のテキストボックスには、name=に同一名”txt”が指定されています。行25では、Request.Formコレクションにエレメント名(“txt”)を指定してCountプロパティでエレメント数を取得して変数intCountに保存しています。行26-29for…nextループでは、Request.Form(“txt”)コレクションにインデックス番号を指定してエレメントの値を取得して、Response.Writeでブラウザに送信しています。

 

response.write("txt(" & intI & ")<b>" _

& request.form("txt")(intI) & "</b><br>")

ètxt(1)Kasai Akio

è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-32AddBR()関数が定義されています。この関数は、行36から呼ばれます。行34では、Request.Formコレクションにエレメント名”txt”を指定してエレメント値を調べています。テキストエリアにデータを入力したときは、行35-36を実行します。行36では、Request.Form(“txt”)で取得したテキストエリアのデータをAddBR()関数に渡しています。AddBR()は、VBScriptReplace()関数でvbCrLf<br>に置換しています。テキストエリアに入力されたデータをそのままResponse.Writeメソッドでブラウザに送信するとCrLfが無視されて改行されません。ブラウザ上で改行させるには、CrLfHTML<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-41for…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で取得したコンマ区切りのデータを配列変数に変換するには:

 

VBScriptSplit()関数を使用すると、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=以上を指定すると、リストボックス型(複数アイテムが常時表示されます)のドロップダウンリストになります。

 

<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>

 

ドロップダウンリストからリンゴバナナブドウを選択して