[三流君] −−> [ASPで遊ぶ、失敗する] −−> [バックナンバー一覧]
−−> No.041 POST(Request.Form)/GET(Request.QueryString) で 送られてきた値を表示する

POST(Request.Form)/GET(Request.QueryString) で 送られてきた値を表示する


本文(発行内容)


<POST(Request.Form)/GET(Request.QueryString) で 送られてきた値を表示する>

こんにちは、三流プログラマーのKen3です。 今回は、 質問やHP訪問者が多い、ASPでフォームを使用したデータのやり取りです。 何かの参考となれば幸いです。

/* * 1.いきなりサンプルを出す(笑) */

http://www.ken3.org/cgi-bin/test/test041-1.asp でテスト実行できます。 <%@LANGUAGE=VBScript%> <html> <head> <title>POST(Request.Form)/GET(Request.QueryString) で 送られてきた値を表示する</title> </head> <body> <!-- Ken3 --><!-- #include file="info.inc" --> <h2>POST(Request.Form)/GET(Request.QueryString) で 送られてきた値を表示する</h2> test041-1.asp<br> <hr> <b>フォームから送られて来た値を表示します</b><br> <font color="red">Request.ServerVariables("REQUEST_METHOD")でPOST/GETを判断</font><br> <font color="blue">For Each で 値を表示する</font><br> <hr> Request.ServerVariables("REQUEST_METHOD")=<b><%=Request.ServerVariables("REQUEST_METHOD")%></b><br> <% 'データの表示をテーブルで行う Response.Write "<TABLE Border='1'>" Response.Write "<TR><TD>項目名</TD><TD>値</TD></TR>" 'タイトル行 'Request.ServerVariables("REQUEST_METHOD")でPOST/GETを判断 If Request.ServerVariables("REQUEST_METHOD") = "POST" Then 'POST判断 'For Each で Request.Formの値を取出す For Each RF In Request.Form Response.Write "<TR><TD>" & RF & "</TD>" '名称表示 Response.Write "<TD>" & Request.Form(RF) & "</TD></TR>" '値の表示 Next Else 'GET 'For Each で Request.QueryStringの値を取出す For Each RQ In Request.QueryString Response.Write "<TR><TD>" & RQ & "</TD>" '名称表示 Response.Write "<TD>" & Request.QueryString(RQ) & "</TD></TR>" '値の表示 Next End If Response.Write "</TABLE>" %> <hr> 終了です。<br> <hr> <h3>METHOD="POST"で送信するテストです</h3> 好きに入力して、送信ボタンを押してください。<br> <FORM ACTION="test041-1.asp" METHOD="POST"> <font color="blue">TYPE="text" テキストの入力テスト</font><br> お名前:<INPUT TYPE="text" SIZE="20" NAME="USER-NAME" VALUE="匿名希望"><br> E-Mail:<INPUT TYPE="text" SIZE="20" NAME="EMAIL" VALUE="****@**.co.jp"><br> <br> <font color="blue">TYPE="password" パスワードの入力テスト</font><br> パスワード:<INPUT TYPE="password" NAME="pass1" SIZE="20"><br> パスワード:<INPUT TYPE="password" NAME="pass2" SIZE="20">(同じのを(笑))<br> <br> <font color="blue">TYPE="CHECKBOX" チェックボックスの入力テスト</font><br> このメルマガでやってほしいことにチェックを入れてください<br> <INPUT TYPE="CHECKBOX" NAME="c_1" VALUE="on">HTMLから詳しく丁寧に<BR> <INPUT TYPE="CHECKBOX" NAME="c_2" VALUE="on">VBScriptをもっと詳しく<BR> <INPUT TYPE="CHECKBOX" NAME="c_3" VALUE="on">ゲーム作ろうよ<BR> <br> <font color="blue">TYPE="RADIO" ラジオボタンの入力テスト</font><br> このメルマガの満足度を5段階で(笑)<br> 不満 ------ 満足<br> 1<INPUT TYPE="RADIO" NAME="q_5" VALUE="1"> 2<INPUT TYPE="RADIO" NAME="q_5" VALUE="2"> 3<INPUT TYPE="RADIO" NAME="q_5" VALUE="3" CHECKED> 4<INPUT TYPE="RADIO" NAME="q_5" VALUE="4"> 5<INPUT TYPE="RADIO" NAME="q_5" VALUE="5"> <br> <font color="blue">TEXTAREA ROWS=10 COLS=40 の入力テスト</font><br> 感想:<TEXTAREA NAME="HONBUN" ROWS=5 COLS=40>複数文章をテスト</TEXTAREA><br> <br> <font color="blue">TYPE="submit" 送信ボタンのテスト</font><br> <INPUT TYPE="submit" NAME="btn1" VALUE="送信1"> <INPUT TYPE="submit" NAME="btn2" VALUE="送信2"> <INPUT TYPE="reset" VALUE="入力し直す"> </FORM> <hr> <h3>METHOD="GET"で送信するテストです</h3> 好きに入力して、送信ボタンを押してください。<br> <FORM ACTION="test041-1.asp" METHOD="GET"> <font color="blue">TYPE="text" テキストの入力テスト</font><br> お名前:<INPUT TYPE="text" SIZE="20" NAME="USER-NAME" VALUE="匿名希望"><br> E-Mail:<INPUT TYPE="text" SIZE="20" NAME="EMAIL" VALUE="****@**.co.jp"><br> <br> <font color="blue">TYPE="password" パスワードの入力テスト</font><br> パスワード:<INPUT TYPE="password" NAME="pass1" SIZE="20"><br> パスワード:<INPUT TYPE="password" NAME="pass2" SIZE="20">(同じのを(笑))<br> <br> <font color="blue">TYPE="CHECKBOX" チェックボックスの入力テスト</font><br> このメルマガでやってほしいことにチェックを入れてください<br> <INPUT TYPE="CHECKBOX" NAME="c_1" VALUE="on">HTMLから詳しく丁寧に<BR> <INPUT TYPE="CHECKBOX" NAME="c_2" VALUE="on">VBScriptをもっと詳しく<BR> <INPUT TYPE="CHECKBOX" NAME="c_3" VALUE="on">ゲーム作ろうよ<BR> <br> <font color="blue">TYPE="RADIO" ラジオボタンの入力テスト</font><br> このメルマガの満足度を5段階で(笑)<br> 不満 ------ 満足<br> 1<INPUT TYPE="RADIO" NAME="q_5" VALUE="1"> 2<INPUT TYPE="RADIO" NAME="q_5" VALUE="2"> 3<INPUT TYPE="RADIO" NAME="q_5" VALUE="3" CHECKED> 4<INPUT TYPE="RADIO" NAME="q_5" VALUE="4"> 5<INPUT TYPE="RADIO" NAME="q_5" VALUE="5"> <br> <font color="blue">TEXTAREA ROWS=10 COLS=40 の入力テスト</font><br> 感想:<TEXTAREA NAME="HONBUN" ROWS=5 COLS=40>複数文章をテスト</TEXTAREA><br> <br> <font color="blue">TYPE="submit" 送信ボタンのテスト</font><br> <INPUT TYPE="submit" NAME="btn1" VALUE="送信1"> <INPUT TYPE="submit" NAME="btn2" VALUE="送信2"> <INPUT TYPE="reset" VALUE="入力し直す"> </FORM> <hr> </body> </html> http://www.ken3.org/cgi-bin/test/test041-1.asp でテスト実行できます。

/* * 2.フォームの送信モード */

HTMLで入力フォームを作る時、 <FORM ACTION="test041-1.asp" METHOD="POST"> と <FORM ACTION="test041-1.asp" METHOD="GET"> のパターンがあります。 何?って感じですが、2つのパターンの簡単な使い方と違いは、 METHOD="GET"のモードで送ると、 ~~~~~~~~~~~~ URLにパラメータを付けた形式でASP(CGI)にパラメータを渡します。 利点は、URLにパラメータがついているので、 ・お気に入りにパラメータ付きで保存可能 ・<A Href=でも使用可能 http://www.ken3.org/cgi-bin/test/test041-1.asp?P=2&Z=ON など、送信ボタンを押すと、URLに?を付けて送信します。 *よくみかけますよね。 ASP側の受取りは、 Request.QueryString("項目名")です。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[No.08 URLに付けたパラメータを参照(クエリ情報)] >( http://www.ken3.org/backno/backno_asp02.html#8 を参照) >では、 >URLに付けた情報 test007-2.asp?ID=123 ?の後ろがパラメーターを取出す >Request.QueryString("項目名")をやりました。 >[No.09 URLに付けたパラメータを参照(クエリ情報)] >( http://www.ken3.org/backno/backno_asp02.html#9 を参照) >では、 >フォームのMETHOD="GET"で送ると、 >フォームの値をURLに載せて、ASPが呼ばれてることを説明しました。 次に、 METHOD="POST"のモードで送ると、 ・GETより大量のデータを送信できる(URLにデータ載せないので) あとなんだろう?私もそんなに気にしてない。 ASP側の受取りは、 Request.Form("項目名")です ^^^^^^^^^^^^^^^^^^^^^^ >[No.04 フォームから値を受け取りたい] >( http://www.ken3.org/backno/backno_asp01.html#4 を参照) >では、 >フォームを作成し、モードPOSTで送信 >受け取りの基本は簡単で、 >Request.Form("フォームの項目名") >で受け取りました。 POSTが標準で、GETはパラメータなどをURLに載せたい場合(検索条件など) と軽く考えてますが、、、

/* * 3.Request.ServerVariables("REQUEST_METHOD")でPOST/GETを判断 */

受取り方法が違うので、どうしましょう? まぁ、普通はどちらで送るか(送ったほうが良いか)、 設計段階で決まっているので、どちらか判断しなくてもよいのですが、 今回、Request.ServerVariables("REQUEST_METHOD")でPOST/GETを判断してみました。 'Request.ServerVariables("REQUEST_METHOD")でPOST/GETを判断 If Request.ServerVariables("REQUEST_METHOD") = "POST" Then 'POST判断 'For Each で Request.Formの値を取出す For Each RF In Request.Form Response.Write "<TR><TD>" & RF & "</TD>" '名称表示 Response.Write "<TD>" & Request.Form(RF) & "</TD></TR>" '値の表示 Next Else 'GET 'For Each で Request.QueryStringの値を取出す For Each RQ In Request.QueryString Response.Write "<TR><TD>" & RQ & "</TD>" '名称表示 Response.Write "<TD>" & Request.QueryString(RQ) & "</TD></TR>" '値の表示 Next End If 意外と簡単で、 Request.ServerVariables("REQUEST_METHOD") にPOST/GETが入っているので、それで判断しました。 判断後、項目名、値の表示を For Each XX IN オブジェクト で取りだし、表示しました。

/* * 4.実際の値を送ってみる */

値の受取りテストでいろいろなTYPEを使ってみました。 TYPE="text" でテキストの入力テスト ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ お名前:<INPUT TYPE="text" SIZE="20" NAME="USER-NAME" VALUE="匿名希望"><br> E-Mail:<INPUT TYPE="text" SIZE="20" NAME="EMAIL" VALUE="****@**.co.jp"><br> よく使うテキストボックスです。 パラメータも見たままですね(笑) TYPE="password" パスワードの入力テスト ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ パスワード:<INPUT TYPE="password" NAME="pass1" SIZE="20"><br> パスワード:<INPUT TYPE="password" NAME="pass2" SIZE="20">(同じのを(笑))<br> 入力すると*****と中身が見えません が、 GETで送ると、URLにデータが載っているので、 IEの履歴なんかみると一発です。 *POSTで送っても、URLに載らないだけで、生データが送られているのですが。 TYPE="CHECKBOX" チェックボックスの入力テスト ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ このメルマガでやってほしいことにチェックを入れてください<br> <INPUT TYPE="CHECKBOX" NAME="c_1" VALUE="on">HTMLから詳しく丁寧に<BR> <INPUT TYPE="CHECKBOX" NAME="c_2" VALUE="on">VBScriptをもっと詳しく<BR> <INPUT TYPE="CHECKBOX" NAME="c_3" VALUE="on">ゲーム作ろうよ<BR> チェックボックスのON/OFFです。 レのチェックが付くと、Valueの値を渡します。 TYPE="RADIO" ラジオボタンの入力テスト ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ このメルマガの満足度を5段階で(笑)<br> 不満 ------ 満足<br> 1<INPUT TYPE="RADIO" NAME="q_5" VALUE="1"> 2<INPUT TYPE="RADIO" NAME="q_5" VALUE="2"> 3<INPUT TYPE="RADIO" NAME="q_5" VALUE="3" CHECKED> 4<INPUT TYPE="RADIO" NAME="q_5" VALUE="4"> 5<INPUT TYPE="RADIO" NAME="q_5" VALUE="5"> ラジオボタンです。 作成のポイントは、NAME="XXX"を一緒にすることです。 CHECKEDは、初期状態でチェックしたい項目がある時に使用します。 TEXTAREA ROWS=10 COLS=40 の入力テスト ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 感想:<TEXTAREA NAME="HONBUN" ROWS=5 COLS=40>複数文章をテスト</TEXTAREA><br> 簡単に言うと複数行のテキストボックスです。 TYPE="submit" 送信ボタンのテスト ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <INPUT TYPE="submit" NAME="btn1" VALUE="送信1"> <INPUT TYPE="submit" NAME="btn2" VALUE="送信2"> ごく最近知ったのですが、送信ボタンに名前を付けて押されたボタンを判断できます。 *同じフォームに削除実行ボタン、印刷ボタンなど作れます http://www.ken3.org/cgi-bin/test/test041-1.asp でテスト実行できるので、遊んでみてください。

/* * 5.終わりの挨拶 */

フォームを使ったデータのやり取りの参考になれば幸いです。 素朴な疑問あったら、気軽に、 メール、掲示板に書き込んでくださいね。 掲示板 : http://www.ken3.org/asp/bbs-asp.html ASP、VBScript勉強中の三流プログラマーのKen3でした。 ---------------------------------- 関連項目(ただのバックナンバー紹介) ---------------------------------- [No.04 フォームから値を受け取りたい] ( http://www.ken3.org/backno/backno_asp01.html#4 を参照) では、 フォームを作成し、モードPOSTで送信 受け取りの基本は簡単で、 Request.Form("フォームの項目名") で受け取りました。 [No.08 URLに付けたパラメータを参照(クエリ情報)] ( http://www.ken3.org/backno/backno_asp02.html#8 を参照) では、 URLに付けた情報 test007-2.asp?ID=123 ?の後ろがパラメーターを取出す Request.QueryString("項目名")をやりました。 [No.09 URLに付けたパラメータを参照(クエリ情報)] ( http://www.ken3.org/backno/backno_asp02.html#9 を参照) では、 フォームのMETHOD="GET"で送ると、 フォームの値をURLに載せて、ASPが呼ばれてることを説明しました。

フィードバック

ASP系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.041を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

三流君の主なリンク先

[アクセスランキング] [サイトマップ] [リンク先・相互リンク先など]
ASPで遊ぶ、失敗する 掲示板 バックナンバー 登録と解除
三流プログラマー 業務の愚痴 掲示板 バックナンバー 登録と解除
VBAで楽しくプログラミング 掲示板 バックナンバー 登録と解除
コンビニのオモテとウラ話 掲示板 バックナンバー 登録と解除
www.ken3.org(サイト内)から Google を利用して、

Ken3の日記(weblog) -- [広告・副収入系] [プログラマー業務の愚痴] [VBA系の話題] [ASP系の話題] [コンビニ系ネタ] [その他]

その他 宣伝広告