[三流君] −−>
[ASPで遊ぶ、失敗する] −−>
[バックナンバー一覧]
−−> No.008 URLに付けたパラメータを参照(クエリ情報)
URLに付けたパラメータを参照(クエリ情報)
本文(発行内容)
<URLに付けたパラメータを参照(クエリ情報)>
こんにちは、Ken3です。
今回は、
URLに付けたパラメータを参照(クエリ情報)
を軽くやって見たいと思います。
/*
* 1.よく見かけると思う、URLのパラメーター
*/
下記、まぐまぐのバックナンバーを表示させるページです
http://backno.mag2.com/reader/Back?id=0000099248
http://backno.mag2.com/reader/Back?id=0000098566
よく見ると、
〜?id=0000099248
と、IDを渡して、処理してるぽいですよね。
あと、アンケート処理で、
はい http://XXXX.xXx.xx/cgi-bin/a.cgi?a=1
いいえ http://XXXX.xXx.xx/cgi-bin/a.cgi?a=2
と
どちらかをクリックさせて、集計用のページを表示させる。
/*
* 2.じゃ、ASPで受け取る方法は?
*/
さて、人様がやってるんだから、自分もできるだろう
どうやるんだろう?
と探りを入れたくなりましたよね。
まずは、前回、ブラウザ(端末情報)をGetする
なんてやってましたね、ここにパラメーターを渡して見ると。
In message "[ASPで遊ぶ No.007] - ブラウザ(端末情報)をGetする",
>http://www.ken3.org/cgi-bin/test/test007-2.asp
>をテストすると下記のようになります。テスト結果は、(長いです)
?とパラメーターID=123を追加してみるか
http://www.ken3.org/cgi-bin/test/test007-2.asp?ID=123
↑のページに飛ぶと、
ServerVariablesの項目が表示されます。
ざっと項目を上から見てみると、
QUERY_STRING↓
ID=123

おっ、この項目、使えそうだなぁ。
http://www.ken3.org/cgi-bin/test/test007-2.asp?ID=123&MODE=ON
だと、
QUERY_STRING
ID=123&MODE=ON
かぁ、
使えそうだけど、項目をバラすのがダルそう。

何か無いのかなぁ。
/*
* 3.Request.QueryString でクエリ情報を取り出す
*/
世の中には(ASPには)、
Request.QueryStringってのがあって、それで簡単に取り出せるみたいです。
http://www.ken3.org/cgi-bin/test/test008-1.asp?ID=123&MODE=ON
で、IDとMODEを表示するサンプル test008-1.asp は、
下記のようになります。
<head>
<title>Request.QueryString でクエリ情報を取り出す</title>
</head>
<body>
<h2>Request.QueryString でクエリ情報を取り出す</h2>
test008-1.asp<br>
<hr>
クエリ情報で渡されたIDとMODEを表示します<br>
ID=
<%=Request.QueryString("ID")%><br>
<%
if Request.QueryString("MODE") = "ON" then
Response.Write "オンです。"
else
Response.Write "オフです。"
end if
%>
<hr>
終了です。<br>
</body>
</html>
IDの値を表示とMODE=ONならカタカナでオン、それ以外だったらオフと表示します。
http://www.ken3.org/cgi-bin/test/test008-1.asp?ID=123&MODE=ON
http://www.ken3.org/cgi-bin/test/test008-1.asp?ID=987&MODE=OFF
で、試してください。
/*
* 4.復習を兼ねて、ファイルに書いてみる
*/
目的(システムには目的ってありますよね)
メルマガの満足度3段階をアンケートしたい。
1.満足
2.普通
3.不満
を読者さんに聞く
プログラムの仕様
test008-2.asp
で、A=回答のパラメーターを受け取り(test008-2.asp?A=1みたいに)
test008.txt
に
結果を書き込む。
復習兼ねて、前回までのプログラムを簡単に修正して下記のように作りました。
<%@LANGUAGE=VBScript%>
<html>
<head>
<title>テキストファイルにアンケート結果を書き込む</title>
</head>
<body>
<h2>テキストファイルにアンケート結果を書き込む</h2>
test008-2.asp<br>
<hr>
<%
'*1 FileSystemObjectを生成します、、って英文、そのままジャン。
Set objFS = Server.CreateObject("Scripting.FileSystemObject")
'*2 test008.txt を追加モードで開く
Set ts = objFS.OpenTextFile(Server.MapPath("test008.txt"), 8, True)
'*3ファイルにアンケート結果のデータを書き込む
ts.write Now & " , " '時刻を書く
'アンケートの結果を判断する
strMSG = "不正なパラメーターです"
if Request.QueryString("A") = "1" then strMSG = "満足"
if Request.QueryString("A") = "2" then strMSG = "普通"
if Request.QueryString("A") = "3" then strMSG = "不満"
ts.write strMSG 'ファイルに結果を書き込む
ts.write chr(13) & chr(10) '改行する
'*4使ったファイルは閉じようよ
ts.close
Response.Write "パラメーターは" & strMSG & "でした" '表示もついでに行う
%>
<hr>
書き込み終了です。<br>
<A HREF="test008.txt">結果のtest008.txtを見る</A><br>
</body>
</html>
ポイントは、今回やった、Request.QueryStringで、
if Request.QueryString("A") = "1" then strMSG = "満足"
if Request.QueryString("A") = "2" then strMSG = "普通"
if Request.QueryString("A") = "3" then strMSG = "不満"
のIf文で判断してます。
さて、よくあるアンケートです
今回の内容は、
満足 http://www.ken3.org/cgi-bin/test/test008-2.asp?A=1
普通 http://www.ken3.org/cgi-bin/test/test008-2.asp?A=2
不満 http://www.ken3.org/cgi-bin/test/test008-2.asp?A=3
どんな感じですか?(笑)
テストで押してみて下さい。

結果は、成功してれば、
http://www.ken3.org/cgi-bin/test/test008.txt
で見ることができます。(テキストファイルに書かれていると思います)
/*
* 5.終わりの挨拶
*/
今回は、
Request.QueryString
でした。
まぁなんとなく、わかったような、わからなかったような。
まだまだ、道のりは遠いなぁ〜
またね(笑)
フィードバック
ASP系の→[掲示板]←を覗く、質問を書き込む
評価・感想
三流君の主なリンク先
[アクセスランキング]
[サイトマップ]
[リンク先・相互リンク先など]
Ken3の日記(weblog) --
[広告・副収入系]
[プログラマー業務の愚痴]
[VBA系の話題]
[ASP系の話題]
[コンビニ系ネタ]
[その他]
その他 宣伝広告