[三流君] −−> [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が呼ばれてることを説明しました。


ページフッター

ここまで、読んでいただきどうもです。目的の情報が見つかったか?少々心配しつつ、、、

三流君へ メッセージを送る

感想や質問・要望・苦情など 三流君へメッセージを送る。
返信例 XXXXさんへ
下記のフォームからメッセージを送ることができます。


あなたのお名前(ニックネーム):さん
返信は?:

アドレス:に返事をもらいたい
感想や質問↓:


(感想や質問・要望・苦情はHPで記事に載せることがあります。)

種類別のリンク や 広告など

[三流君(TOP ken3.org へ戻る)] / [ASPで遊ぶ、失敗する] / [ASP記事 バックナンバー目次]


Blogとリンク:[三流君のMemo別館]/ [ASP 三流君のソースコード置き場]/ [Ken3Video YouTubeで動画解説]
広告:

気になった ジャンル ↓を選択してください。

まぁ、基本はデータの受け取りかなぁ。
・[Form等を使用したデータのやり取り]・・・ASPと言っても、HTMLの入力フォームからデータを受け取ります。POSTやGETでやりとりを押さえますか。

次は、データの入出力 で ADOを使った(ADOで接続) と SQLの解説を少々
・[ADOでMdbファイルを使う]・・・MDBと接続して、簡単な追加・更新・削除を行った。
・[ADOでExcelと接続してみた]・・・.xlsと接続してSQLを使ってみた。
・[ADOでCSVと接続してみた]・・・.CSV テキストを読み出した。※更新・削除はできません

広告:



DBが使えるので、あまり使用しないけど、普通のテキストファイル処理
・[テキストファイル処理]・・・ファイルを開いて、書き込む。1行読み込みなどを軽く

VBScriptでFormat関数が無いなど、微妙にVBAと違うけど
[VBScript関数関係の説明]・・・少し、処理を書いてみた。
[その他処理サンプル]・・・あまり良いサンプル作れなかったけど。。。
何かの参考となれば幸いです。



[三流君(TOP ken3.org へ戻る)] / [ASPで遊ぶ、失敗する] / [ASP記事 バックナンバー目次]


広告: