三流君ASPで遊ぶ、失敗する

[三流君] Top ken3.orgへ
[ASP解説] ASPの解説TOP
[ASP記事 バックナンバー] 番号順のバックナンバー
[SOHO/在宅プログラマー/派遣] 派遣のお話ほか
[...サイトマップ(総合案内へ)]




分類別ガイド
ADOで[ADO Mdb接続] ,[ADO Excel接続] ,[ADO CSV接続]

[ASP Form データのやりとりPOSTとGET]
[ASPでTextFile操作]
[ASPでVBScriptを使う]
[その他サンプル]

バックナンバー No.1 〜 No.4



こんにちは、Ken3です。

今までの総集編です。最新は[ バックナンバーを読む]で確認してください。

まとめてみると、イロイロと穴がわかる。

それを補いながら、次回から何か作ってみたいと思います。

/*
* 1.Active Server Pages(ASP)って?
*/
Active Server Pages(ASP)の説明をしないで、いきなりメルマガ発刊してた。

まず、頭に<script>タグを書き、
<%@ LANGUAGE=VBScript %>

あとは、普通にHTMLを書いて、
サーバー側の処理を記述したい場合は、
<% と
  ここの間がサーバーで処理される
%>
で囲えばいいんだぁ。

<% 〜 %>内に、VBScript(VBAに似てるけど微妙に違う)を記述する。

[No.01 Response.Writeで遊ぶ]
( http://www.ken3.org/backno/backno_asp01.html#1 を参照)
で、そんな説明をいきなりしてました(笑)

すると、読者から、
In message "Re: [ASP で遊ぶ No.001] - Response.Write で遊ぶ",
Yさん wrote...
>サンプルを実行すると、アプリを選択するよう聞いてきます。
>設定方法を教えてください。
---
In message "[BBS :2] サーバーの動作条件",
H.Iさん wrote...
>サーバー側ではどのような条件が整っていればよいのですか?
>Windows2000サーバーではIISを利用すると聞いているのですが。
>また、aspはwindows独自の機能と聞いていますがLinuxで同じようなことは実現
>できますか?教えて下さると有り難いです。
---
と質問が来てしまう(笑)

慌てて、個人でサーバー持ってる人って少ないと思うので、
Windows2000プロフェッショナルにIISをセットアップする方法を
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
http://www.ken3.org/asp/iis-win2000pro.html
に載せる、もう一つの手WindowsNTベースでIISが動作しているサーバーを借りる
http://www.ken3.org/asp/server.html
レンタルサーバーを紹介する(広告の紹介料を稼ぎたかったが反応無し)

[No.02 ASPファイルを動作させるには?]
( http://www.ken3.org/backno/backno_asp01.html#2 を参照)
で、フォローを入れたっけ(笑)*1と2逆だろ。

あと、自分は見てるのだけど、
[ IIS関係 マニュアル ヘルプの話 ]
http://www.ken3.org/asp/iis-help.html
で、やっとヘルプの存在をお知らせしましたね(遅いって)
~~~~~~~~~~~~~~~~~~~~~~

[No.20 インクルード ファイルを使ってまとめてみた]
( http://www.ken3.org/backno/backno_asp05.html#20 を参照)
では、
同じ処理を
<!-- #include file ="入れたいファイルのパス" -->
これを(インクルード処理を)、ASPのファイルの中に入れてまとめました。

まぁ、書き方は、慣れるとして、
学習しなきゃいけないのが、
~~~~~~~~~~~~~~~~~~~~~~~~
VBScript・・ 制御文(IfやForなど)や文字列編集・変換などの関数
HTML・・・・・・ これは、フォーム作りや見た目(Webベースなので)
組み込みオブジェクト FileSystemObject や ADODB.Connection その他の操作
まぁ、こんな感じの知識の組み合わせかなぁ。
と考えると、私のメルマガバランス悪いし、順番が滅茶苦茶(少々反省)

/*
* 2.VBScriptの解説、まったくやってない、関数は少しやってるけど
*/

基本は、HTMLに<% %>でスクリプトを書く、
私がExcelのVBA少し知ってるので、
似ているVBScriptを使用して解説をハジメル。

Response.Write を 使用して、
サーバーで何かしら処理した結果を表示する(返す)。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
表示がHTMLなので、HTMLのセンスも少し必要。
*見た目も重要だし、基本のタグ知らないと話にならない?

[No.03 乱数を使用して今日の運を表示]
( http://www.ken3.org/backno/backno_asp01.html#3 を参照)
では、
Response.Write n

<%=変数%>
と書ける方法を紹介、乱数Rnd関数を使ってみました。

[No.05 IsEmptyでデータチェック]
( http://www.ken3.org/backno/backno_asp02.html#5 を参照)
では、
If IsEmpty(Request.Form("USER-NAME")) = True
とデータの入力チェックで使用しました。

[No.11 結果のデータをInStr関数を使ってカウントしてみる]
( http://www.ken3.org/backno/backno_asp03.html#11 を参照)
では、
InStr関数を使って文字列を探し、カウントする処理を行いました。

[No.12 Left関数を使ってみた、ファイル設計?]
( http://www.ken3.org/backno/backno_asp03.html#12 を参照)
では、
ファイル設計の小話とLeft関数を使ってカウントする処理を行いました。

[No.13 変数を配列にして簡潔に書いてみた]
( http://www.ken3.org/backno/backno_asp03.html#13 を参照)
では、
配列変数を使った処理方法を解説しました。

[No.14 外見の調整とArray関数を使用して配列作成]
( http://www.ken3.org/backno/backno_asp03.html#14 を参照)
では、
配列の初期化で、Array関数を使った方法
strBOX = Array("満足","普通","不満")
を説明しました。

[No.15 FormatNumber関数を使用して小数点固定、%を表示]
( http://www.ken3.org/backno/backno_asp04.html#15 を参照)
では、
外見重要、男性も化粧する時代、FormatNumber関数を使用して表示を調整
を説明しました。

[No.16 入力、結果表示を1つに、Subで関数分割]
( http://www.ken3.org/backno/backno_asp04.html#16 を参照)
では、
やっと、Subの関数を使用して、分割しCallで呼ぶ方法を解説してます
あっ、Function関数の説明してないや(謎)

[No.18 Mod演算子 で 余りを計算する]
( http://www.ken3.org/backno/backno_asp04.html#18 を参照)
では、
MOD で 余りを計算させ5行単位で区切る処理を書きました。

[No.19 001行目と表示したくてRight関数を使う]
( http://www.ken3.org/backno/backno_asp04.html#19 を参照)
では、ASP(VBScript)にFormat関数が無いので、
右側から文字列を切り取るRight関数を使い
Right("000" & カウンタ変数, 3)
で、頭に000を強引に付けてから、右3文字を取り代用しました。

[No.21 文字列の置き換え、Replace関数を使用]
( http://www.ken3.org/backno/backno_asp05.html#21 を参照)
では、Replace関数
Replace(元の文字列, 変換したい単語, 置換える単語)
を使って、タグの一括変換・追加をやってみました。

[No.24 Split関数で配列作成、UBoundで個数の判断]
( http://www.ken3.org/backno/backno_asp05.html#24 を参照)
では、
Split関数で分解元の文字列と区切り文字を渡すと配列が作成される、
strBOX = Split("Ken3,ASP不得意,VBA少しできる", ",") '配列データを作成
その配列の要素数を知りたいなんて時は、
UBound(配列変数)
とやると、配列のインデックス最大値(数)を返してくれるので、
組み合わせて使うと便利と説明。

[No.31 DateAdd関数で日付や時間の計算]
( http://www.ken3.org/backno/backno_asp07.html#31 を参照)
では、
DateAdd関数で日付や時間の計算して、
SQLの条件に使用して、3日前までのデータを表示しました。

あれ?VBScriptの構文、IfやForなどの解説して無いや
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
関数の解説ももっと詳しくしてみたいですね。
*リファレンス的にまとめたいです。

/*
* 3.フォームから値を受け取る
*/

どんなシステムにも、ユーザーから受け取った値を処理する仕組みがあります。
HTMLのフォームから入力された値を送ってもらい、ASPでも処理します。

[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("項目名")をやりました。
満足 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
などのよくみかけるパターンを少し解説しました。

さらに続けて、
[No.09 URLに付けたパラメータを参照(クエリ情報)]
( http://www.ken3.org/backno/backno_asp02.html#9 を参照)
では、
フォームのMETHOD="GET"で送ると、
フォームの値をURLに載せて、ASPが呼ばれてることを説明しました。

[No.22 隠し項目type="hidden"を使ってみた]
( http://www.ken3.org/backno/backno_asp05.html#22 を参照)
では、
画面に表示されない隠し項目の使い方を解説しました。
固定のパラメーターなどを隠して(表示しないで)渡す時に必要です。

まだ、パスワードの入力フォーム、リストボックスなどの選択やってないなぁ。
フォーム関係は奥が深いので、さらに詳しく説明が必要ですね。

/*
* 4.テキストファイル FileSystemObject
*/
ASPでファイルを操作するには、
FileSystemObject
を使用します。

[No.06 データをテキストファイルに書き込む]
( http://www.ken3.org/backno/backno_asp02.html#6 を参照)
では、
'*1 FileSystemObjectを生成します、、って英文、そのままジャン。
Set objFS = Server.CreateObject("Scripting.FileSystemObject")
'*2 test006.txt を追加モードで開く
Set ts = objFS.OpenTextFile(Server.MapPath("test006.txt"), 8, True)
'*3ファイルにデータを書き込む
ts.write "test006-1.asp アクセス時刻は、" & Now
ts.write chr(13) & chr(10)
'*4使ったファイルは閉じようよ
ts.close
オブジェクト作成、ファイルオープン、書き込み、クローズをやりました。
また、物理ファイルの位置を求める
Server.MapPath("ファイル名")
を使いました。

書き込みができたら次は、読み込みで、
[No.10 テキストファイルからデータを読む]
( http://www.ken3.org/backno/backno_asp03.html#10 を参照)
では、
一行読み込み .ReadLine
.AtEndOfStream でファイルの終端をチェックする
.ReadAll で ファイルを全て読む
の読みこみ系処理を解説。

[No.23 苦肉の策、配列をリングみたく使ってみた]
( http://www.ken3.org/backno/backno_asp05.html#23 を参照)
では、
テキストファイルのデータを逆順に読んでみたくって、
チャレンジしたけど、うまく行かなくて、
小細工してみたお話です。

ディレクトリ関係、まったくノータッチですね。
ファイルの存在チェックとか、その他細かいところありそうですね。

/*
* 5.データベースに挑戦 ADODB.Connection
*/

なんとなく、ASPがわかってきた今日この頃、
データベースを操作するため、
ADO DB Connection オブジェクト の 操作

SQLの解説をはじめた。

[No.26 MDBファイルにアクセスしてみたADODB.Connection]
( http://www.ken3.org/backno/backno_asp06.html#26 を参照)
では、基本形の
'ADO DB Connection オブジェクトを作成する、英文そのままじゃん
Set db=Server.CreateObject("ADODB.Connection")
'.Provider?プロバイダー?通信会社?じゃなくって
'データアクセスにはJet.OLEDB.4.0を使うことを設定
db.Provider = "Microsoft.Jet.OLEDB.4.0"
'次に、接続DBの位置を渡すので、Server.MapPathで変換して渡す
db.ConnectionString = Server.MapPath("db026.mdb")
'やっとデータベースを開ける
db.open
を解説した。

'お約束のレコードセットの作成 テーブル名TESTから全項目(*)を指定
Set rs = db.Execute("Select * From TEST")

[No.27 SQL INSERT INTO文でデータの追加]
( http://www.ken3.org/backno/backno_asp06.html#27 を参照)
では、
SQLのINSERT INTO文を使って、データをDBに追加。

[No.28 SQL ORDER BYでデータの並べ替え]
( http://www.ken3.org/backno/backno_asp06.html#28 を参照)
では、
SQLのORDER BYを使ってデータの並べ替え、
DESCを追加して降順(逆順)を解説。

[No.30 SQL SELECT文WHERE句を使って条件検索]
( http://www.ken3.org/backno/backno_asp07.html#30 を参照)
では、
SELECT文のWHERE句の説明を軽く行い、
区分を指定してデータを表示しました。

[No.32 SQL DELETE文でデータを削除してみた]
( http://www.ken3.org/backno/backno_asp07.html#32 を参照)
では、
SQL Delete文を発行して、データを削除しました。

[No.33 SQL UPDATE文でデータを更新する]
( http://www.ken3.org/backno/backno_asp07.html#33 を参照)
では、
SQL UPDATE文を発行して、データを更新しました。

SQL、まだまだ、入り口に入ったところです。
私も探りながら一歩一歩進んで行くので、ヨロシクです。

/*
* 6.その他、組み込みオブジェクト
*/

[No.07 ブラウザ(端末情報)をGetする]
( http://www.ken3.org/backno/backno_asp02.html#7 を参照)
では、
Request.ServerVariables(項目名)
とやると、いろいろな値が取れます。
Request.ServerVariables("REMOTE_ADDR")で、IPアドレス
Request.ServerVariables("HTTP_USER_AGENT")で、端末の情報
がGetできる、他に取得可能な値を見てみたい、をやりました。

[No.17 中身を表示、Server.HTMLEncodeでソースの表示]
( http://www.ken3.org/backno/backno_asp04.html#17 を参照)
では、
Server.HTMLEncoded("文字列")
で<HTML>の<を&lt;に>を&gt;と置き換えて、
&lt;HTML&gt;にしてくれるよと関数を紹介しました。

他にも、クッキー情報やセッション、共通のApplicationオブジェクトなど、
まだまだ手を付けてない項目がたくさんあります。

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

今回は、軽く過去のメルマガをまとめてみました。

単体じゃなく、そろそろつなげて1本システムもどきを作りたいですね。
そんな話しの続きは(自分のメルマガ宣伝)
http://www.ken3.org/backno/backno_guchi28.html#142
で、[トンネルの話、貫通後、横に広げるのは簡単?]
といいかげんなこと書いてます。お時間のある人は見て笑ってください。

[No.25 復習兼ねてHTMLソースを変換するツールの作成]
( http://www.ken3.org/backno/backno_asp06.html#25 を参照)
で、
あまりにも簡単なの作ったけど、物足りなかったでしょ。

[No.29 復習で一言コメント入力の処理を作る]
( http://www.ken3.org/backno/backno_asp06.html#29 を参照)
で、
データベースを使った、簡単なコメント管理(追加と表示機能しかない)
を作りました。
一言感想 http://www.ken3.org/cgi-bin/an/look-komento.asp で使用してるけど、
これもイマイチだなぁ(笑)

もっとまともな例題・使える例題を考えて
チャレンジしてみたいと思います。

素朴な疑問あったら、気軽に、
メール、掲示板に書き込んでくださいね。
掲示板 : http://www.ken3.org/asp/bbs-asp.html

ASP、VBScript勉強中の三流プログラマーのKen3でした。

PS.今日はリンクが多過ぎて、目が疲れた(笑

No.1 2002/11/13
Response.Writeで遊ぶ
[ページTOPへ戻る]
<Response.Writeで遊ぶ>

こんにちは、(はじめまして)
AB型の変わり者Ken3です。
^^^^^^^^^^^^^^^^

メルマガの方向性を考えてたら(おいおい、発行申請する時考えとけよ)
発行期間がアイテシマッタ、ゴメンナサイ。

/*
 * 1.あれ?こんなメルマガ登録したかなぁ(笑)
*/

講座形式にしようと、悩んでいたら、発行が遅れてしまい、
読者さんの立場からだと、
あれ?こんなメルマガ登録したかなぁ(笑)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
と忘れられてしまうので、
今回は、
Response.Writeで、遊んでみたいと思います。

/*
 * 2.ASPって何?
*/

ASPって何?
なんでしょうね?
私もよくわかってないんだけど(オイオイ)
サーバー上で処理を行い、その結果(HTML)をクライアントに返す
う〜ん、何言ってんだか、、わかんねぇなぁ。

/*
 * 3.とりあえず、サンプル見ながらやって行くか
*/
えっと、ファイル名は.aspにするんだぁ、
安易にtest001.aspでイッカな。
で、頭に<script>タグを書くの?

<%@ LANGUAGE=VBScript %>

あとは、普通にHTMLを書いて、
サーバー側の処理を記述したい場合は、
<% と 
  ここの間がサーバーで処理される
%> 
で囲えばいいんだぁ。

なんか変なの、、、

で作ったのが、下記の
test001.asp
です。

<%@ LANGUAGE=VBScript %>
<html>
<head>
<title>三流君 ASPで遊ぶ、失敗する No.001</title>
</head>
<body bgcolor="#ffffff">

<a href="http://www.ken3.org/" target="_top">[ Ken3 HP Topへ ]</a><br>
<hr>
test001.asp<br>

<%

	Response.Write "なんか変な感じ<br>"
	Response.Write "こんなんでいいの?<br>"

%>

</body>
</html>


http://www.ken3.org/cgi-bin/test/test001.asp
を表示すると(が実行されると)

[ Ken3 HP Topへ ]
----------------------------------------------------------------------------
test001.asp
なんか変な感じ
こんなんでいいの?

と表示され、HTMLのソースを表示してみると、

<html> <head> <title>三流君 ASPで遊ぶ、失敗する No.001</title> </head> <body bgcolor="#ffffff"> <a href="http://www.ken3.org/" target="_top">[ Ken3 HP Topへ ]</a><br> <hr> test001.asp<br> なんか変な感じ<br>こんなんでいいの?<br> </body> </html> あれ? <% 〜 %> で囲まれた部分が、 キレイに無くなってますね。 これが、 サーバー上で処理を行い、その結果(HTML)をクライアントに返す かぁ、、、 なんとなく、わかったような、わからなかったような、、、 /* * 4.現在の時間を表示(可変の処理) */ 今回の固定の文字表示の処理だと、 サーバー上で処理を行い、その結果(HTML)をクライアントに返す なんてカッコ良く言われてもねぇ、それで?となっちゃうよね。 なので、現在時刻の表示を行ってみました。 <%@ LANGUAGE=VBScript %> <html> <head> <title>三流君 ASPで遊ぶ、失敗する No.001</title> </head> <body bgcolor="#ffffff"> <a href="http://www.ken3.org/" target="_top">[ Ken3 HP Topへ ]</a><br> <hr> test001-2.asp 現在時刻を表示します<br> <% Response.Write "現在の時刻は<br>" '固定の文字 Response.Write now '*1 now関数を使用しただけです Response.Write "です<br>" '固定の文字 %> </body> </html> *1でNow関数を使用しただけでした(笑) 結果は、 http://www.ken3.org/cgi-bin/test/test001-2.asp を見て下さい。 /* * 5.終わりの挨拶 */ で、今日は何が言いたかったの? 初回の挨拶です(笑) 自分で読み返してもわかりにくかったです。 そのうち進歩すると思うので、気長にお付き合いください。 何か質問などあったら、掲示板に書いてもらえるとうれしいです *質問に回答形式だとネタ考えないでいいので、ラクできます(笑) 三流プログラマーのKen3でした。

No.2 2002/11/18
ASPファイルを動作させるには?
[ページTOPへ戻る]
<ASPファイルを動作させるには?>

今回は、
・サンプルが動かない
・動作環境は?
と質問が来たので、軽く答えてみたいと思います。

/*
 * 1.サンプルを実行すると、アプリを選択するよう聞いてきます。
*/

下記の質問メールいただきました。
In message "Re: [ASP で遊ぶ No.001] - Response.Write で遊ぶ",
Yさん wrote...
 >サンプルを実行すると、アプリを選択するよう聞いてきます。
 >設定方法を教えてください。
 >

あれ?どうしてだろう?
あっ、
エクスプローラー上からファイルを実行しようとすると、ダメなんですよ。



普通のHTMLファイルだと、そのままローカル環境でも実行できるのですが、
ASPファイルを実行するには、
マイクロソフトのIISが動いているマシーン上で動かさないと動作しないんですよ。

動作環境などの詳しい説明が無くって、スミマセンでした。

http://www.microsoft.com/japan/products/iis/default.htm
↑マイクロソフトのIISのページです。のぞいてみてください。

/*
 * 2.サーバーの動作条件
*/

In message "[BBS :2] サーバーの動作条件",
H.Iさん wrote...
 >サーバー側ではどのような条件が整っていればよいのですか?
 >Windows2000サーバーではIISを利用すると聞いているのですが。
 >また、aspはwindows独自の機能と聞いていますがLinuxで同じようなことは実現
 >できますか?教えて下さると有り難いです。

と、掲示板に質問の書き込みをいただきました。
書きこみ、どうもです。

> サーバー側ではどのような条件が整っていればよいのですか?

XXX.ASPのファイルを実行するには、
WebサーバーでIISが動作していないとダメです。

> Windows2000サーバーではIISを利用すると聞いているのですが。

はい、標準のオプションでWindows2000サーバーをインストールすると、
IISも半強制的にインストールされると聞いたことがあります。

> また、aspはwindows独自の機能と聞いていますがLinuxで同じようなことは実現
> できますか?教えて下さると有り難いです。

ASPはIIS上で動作するので、
Windows独自の機能です。

Linuxで同じようなことをするには、
Perlを使用するのが一般的だと思います。

http://search.mag2.com/reader/Magsearch?keyword=Perl
でまぐまぐのPerl関係のメルマガ検索できます。
*おいおい、他店を紹介してどうするんだよ、
 プライド無いなぁ。

/*
 * 3.Windows2000プロフェッショナルにIISをセットアップ
*/
個人でサーバー持ってる人って少ないと思うので、
Windows2000プロフェッショナルにIISをセットアップする方法を
http://www.ken3.org/asp/iis-win2000pro.html
に載せてます。
参考となれば幸いです。

/*
 * 4.レンタルサーバー
*/
もう一つの手なのですが、
WindowsNTベースでIISが動作しているレンタルサーバーを借りる方法があります。
http://www.ken3.org/asp/server.html 
に私が現在使っているレンタルサーバーを紹介してます。

でも練習用なら、一台マシーンを潰して、
IISを社内のマシーンや自宅のマシーンに入れて、
使うほうがいいと思います。

腕があがって、公開できるカッコイイページ作ってからでも遅くないかと。
*私自身はあまり考えないでレンタルしてしまった。
 メルマガ書く程度だったら、家庭内のLANでテストがよかったかも。。。
 まぁ、サンプルの実行結果を読者が確認できるからイッカ。

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

で、今日は何が言いたかったの?
ASPをテストする環境をそろえるのって、意外と大変だと思った。
なんかそれが壁となって挫折する人居そう。

何か質問があったら、気軽に、
メール、掲示板に書き込んでくださいね。

三流プログラマーのKen3でした。

No.3 2002/11/19
乱数を使用して今日の運を表示
[ページTOPへ戻る]
<乱数を使用して今日の運を表示>

こんにちは、Ken3です。

今回は、変化のあるページを作りたいので、
1から100までの乱数を発生させて、
勝手な今日の幸運度を表示させて見たいと思います。

/*
 * 1.仕様
*/
1から100までの乱数を発生させ、
その数値を今日の幸運度として、
画面に表示させる。

/*
 * 2.まず、変数の扱いのテストするか。
*/

まず、変数の扱いのテストでもするか。

<%@LANGUAGE=VBScript%>
<html>
<head>
<title>三流君 ASPで遊ぶ、失敗する No.003</title>
</head>
<body bgcolor="#ffffff">

test003-1.asp 変数で遊ぶ<br>

<%

    Dim n As Integer '(*1)乱数受け取り用

    n = 100

	Response.Write "nの中身は<br>"   '固定の文字
	Response.Write n                  '変数の中身を表示
	Response.Write "です<br>"         '固定の文字

%>

</body>
</html>



あれ、
HTTP 500.100 - 内部サーバー エラー - ASP エラー
インターネット インフォメーション サービス

エラー タイプ
Microsoft VBScript コンパイル エラー (0x800A0401)
ステートメントの末尾が不正です。
/test/test003-1.asp, line 12, column 6

1 2 3 4 .... 12行目っていうと、
Dim n As Integer '(*1)乱数受け取り用
ここかぁ、
えっ、どこが?エラーなの?

VBAの経験者だとひっかかるみたいだけど、
As integer As Stringなどと型を指定できないみたいです。
なんかシックリこないけど、
Dim n にする。う〜ん。私の勘違いかそれとも。後で調べよう。

おっ、今度は無事に表示されました。
http://www.ken3.org/cgi-bin/test/test003-1.asp
を実行して見て下さい。



/*
 * 3.乱数を発生させて表示する
*/

気を取り直して、
乱数かぁ、
Randomize で乱数系を初期化
Rnd で乱数を発生ですよね。これはVBAと同じだから違和感無いよね。

<%@LANGUAGE=VBScript%>
<html>
<head><title>三流君 ASPで遊ぶ、失敗する No.003</title></head>
<body bgcolor="#ffffff">
test003-2.asp 乱数を発生させる<br>
<%
    Dim n '(*1)乱数受け取り用、変数の型は指定できないみたい

    Randomize               '*2 これでで乱数系を初期化
    n = Int(Rnd * 100) + 1  '*3 乱数を発生と代入

	Response.Write "今日の幸運度は<br>"  '固定の文字
	Response.Write n                     '変数の中身を表示
	Response.Write "%です<br>"           '固定の文字
%>
</body></html>

*2と*3みたいな感じで使用しました。
http://www.ken3.org/cgi-bin/test/test003-2.asp
を実行すると、毎回値が変わると思います。
だから何?って感じだけどね(笑)

/*
 * 4.HTMLのHRタグを使用してみる
*/
ASP使ってるとか偉そうなこと言ってるけどたいしたこと無いね。
まぁ、今はたいしたことやってないので。

VBのフォームやAccessのフォームと違って、
画面関係の最終出力はhtmlなんですよね。

それが何か?関係あるの?

htmlの表現方法も必要ってことなんですよ。
(今のメモ帳でASP作ってる私みたいな人はね、VB.NETも勉強しないとね)

まぁ、画面の出力関係、色の使い方はセンスが必要だけど。

たとえば、文字だけで60%とか表示していたものを
HRのタグを使用して、下記のような棒グラフもどきを作ってみるとか、
チョットした小細工や知識も必要なんですよ。
う〜ん、なんかニガテだなぁ見せるページ作りって。。

http://www.ken3.org/cgi-bin/test/test003-3.asp
を実行すると、赤い棒グラフが表示されます。

<%@LANGUAGE=VBScript%>
<html>
<head><title>三流君 ASPで遊ぶ、失敗する No.003</title></head>
<body bgcolor="#ffffff">
test003-3.asp <HR>タグを使用して見せる工夫をする<br>
<%
    Dim n '(*1)乱数受け取り用、変数の型は指定できないみたい

    Randomize               '*2 これでで乱数系を初期化
    n = Int(Rnd * 100) + 1  '*3 乱数を発生と代入

	Response.Write "今日の幸運度は<br>"  '固定の文字
	Response.Write n & "%です"           '数値を表示
                                         '*4 HRで棒グラフもどきにする
	Response.Write "<HR Size=8 color=red align=left "   
	Response.Write "Width=" & n & "% >"

%>
</body></html>

*4でHRタグを作成し、出力してます。
SIZE COLOR ALIGN WIDTH とパラメーターをセットしてます。

/*
 * 5.省略形の書き方、好みによるけど
*/
なんか、ソースファイルが汚いんだけど、
ASPってそんなもんなの?
イヤ、何か違う書き方もあると思う。
チョイ探してみると、
Response.Write n
は
<%=変数%>
と書けるみたいです。
えっ、そんな省略形の書き方あるんだぁ。
ってことは。

<%@LANGUAGE=VBScript%>
<html>
<head><title>三流君 ASPで遊ぶ、失敗する No.003</title></head>
<body bgcolor="#ffffff">
test003-4.asp <HR>タグを使用して見せる工夫をする<br>
<%
    Dim n '(*1)乱数受け取り用、変数の型は指定できないみたい

    Randomize               '*2 これでで乱数系を初期化
    n = Int(Rnd * 100) + 1  '*3 乱数を発生と代入
%>
今日の幸運度は<br>
<%=n%>%です
<HR Size=8 color=red align=left Width=<%=n%>% >
</body></html>

みたいに書けるんだぁ。
なんか不思議。
http://www.ken3.org/cgi-bin/test/test003-4.asp
の実行結果はもちろん、同じですよ。

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

で、今日は何が言いたかったの?
・変数宣言As integer As Stringなどと型を指定できない(調査する)
・RandomizeとRndを使った。
・ASP、ASPと騒ぐ前にHTMLも勉強しておこう
・<%=変数%>と記述することができる。
こんな感じかな。

何か隠してない?
ドキッ、、、なんでわかったの?
話し好きなのにハヤクまとめて、逃げようとしてたので。

ほら、ヤッパなんか変だよ。 ここの場所↓↓↓↓
<HR Size=8 color=red align=left Width=<%=n%>% >
行の後ろ、
%>% >となんで、スペース空いてるの?
^^^^^
ヤバ、見つかったか。。。
90%>と%で終わるとスクリプトの終了タグの%>と間違えるので小細工でスペースを。

あっ、それにパラメーターって""で囲ってなかったっけ?
<hr width="90%">
とか。

次回は、%の表現方法と””の書き方ですね。
次回のネタ決まったところで、逃げるようにサヨナラです。
オイオイ待ってよ。

またね(笑)

何か質問があったら、気軽に、
メール、掲示板に書き込んでくださいね。

三流プログラマーのKen3でした。


No.4 2002/11/21
フォームから値を受け取りたい
[ページTOPへ戻る]
<フォームから値を受け取りたい>


こんにちは、Ken3です。

今回は、
ファームから値を受けとって処理をしてみます。

/*
 * 1.仕様
*/
html側の処理
フォームを作成して、ASPファイルを呼び出す
入力項目は

テキストボックスで
名前、

チェックボックスで、やりたいことをチェックさせ、
□HTMLから詳しく丁寧に
□VBScriptをもっと詳しく
□ゲーム作ろうよ

RADIOボタンで、満足度を選択。

ASP側の処理
単純にパラメーターの値を表示する
if文でチェックされた値を確認しメッセージ表示する

/*
 * 2.まず、HTMLのフォームを作るか
*/

サンプルのソースを下記に載せます
HTMLなのでローカルにメモ帳で作成してもいいです。
http://www.ken3.org/cgi-bin/test/test004-1.html
でテストできるので、確認してください。

<html>
<head>
<title>test</title>
</head>
<body>
<h2>フォームに値を入力してASPファイルに渡す</h2>
<br>
好きに入力して、送信ボタンを押してください。<br>
<FORM ACTION="http://www.ken3.org/cgi-bin/test/test004-1.asp" METHOD="POST">

お名前:
<INPUT TYPE="text" SIZE="20" NAME="USER-NAME" VALUE="匿名希望">
<br>
<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>
このメルマガの満足度を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">
4<INPUT TYPE="RADIO" NAME="q_5" VALUE="4">
5<INPUT TYPE="RADIO" NAME="q_5" VALUE="5">
<br>
<br>
<br>
<INPUT TYPE="submit" VALUE="送 信">
<INPUT TYPE="reset"  VALUE="入力し直す">

</FORM>

</body>
</html>

ポイントは、
<FORM ACTION="http://www.ken3.org/cgi-bin/test/test004-1.asp" METHOD="POST">
のACTION=Urlで、フォームの値を渡すASPを設定します。

あとは、みたままなのですが、
<INPUT TYPE="text" SIZE="20" NAME="USER-NAME" VALUE="匿名希望">
でテキスト入力エリアを作成。

<INPUT TYPE="CHECKBOX" NAME="c_1" VALUE="on">HTMLから詳しく丁寧に<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">
4<INPUT TYPE="RADIO" NAME="q_5" VALUE="4">
5<INPUT TYPE="RADIO" NAME="q_5" VALUE="5">
は項目選択のラジオボタン

<INPUT TYPE="submit" VALUE="送 信">
で、このボタンが押されると、
<FORM ACTION="url"←を呼び出します。

<INPUT TYPE="reset"  VALUE="入力し直す">
はクリアのボタンで、入力値が消えます。

これは、HTMLのソースなので、
アンケート処理などを行っているWebシステムを探りに行って、
ソースの表示などでHTMLソースを表示して、
パクッテ(勉強して)テクを盗みましょう(参考とさせてもらいましょう)

/*
 * 3.ASPでフォームの値を受け取り処理を行う
*/

受け取りの基本は簡単で、
Request.Form("フォームの項目名")
で受け取れます。

<INPUT TYPE="text" SIZE="20" NAME="USER-NAME" VALUE="匿名希望">
                             ^^^^^^^^^^^^^^^
NAME="USER-NAME" なので、
受け取る時は(使用する場合は)
Request.Form("USER-NAME")
で値を参照できます。

下記にサンプルのソースを載せます。

<%@LANGUAGE=VBScript%>
<html>
<head><title>三流君 ASPで遊ぶ、失敗する No.004</title></head>
<body bgcolor="#ffffff">
test004-1.asp フォームから値を受け取る<br><hr>
<%
	'そのまま、テキストを表示する
	Response.Write Request.Form("USER-NAME")
	Response.Write "さん、入力どうもです。<br>"

	'チェックボックスonの時メッセージを表示する
	if Request.Form("c_1") = "on" then
		Response.Write "HTMLかぁ、ニガテなんだよね<br>"
	end if
	if Request.Form("c_2") = "on" then
		Response.Write "VBScript、まぁ一歩一歩やりましょうよ<br>"
	end if
	if Request.Form("c_3") = "on" then
		Response.Write "えっ、ゲーム作成?ムリムリ<br>"
	end if

	'RADIOボタン、中身表示と値を判断してメッセージ表示
	Response.Write "満足度は"
	Response.Write Request.Form("q_5")
	Response.Write "かぁ、、、"
	if Request.Form("q_5") <= 2 then  '2以下は不満にする
		Response.Write "不満かぁ、がんばらないと"
	end if
	if Request.Form("q_5") >= 4 then  '4以上満足なら
		Response.Write "よかったぁ〜一安心"
	end if
	Response.Write "<br>"
%>
<br>
<HR>
終了で。うまく値がわたりましたか?<br>
</body></html>

ポイントも得に無く、
ダラダラと
Response.Write でブラウザーに表示(ソースを返してます)

if 文で少し分岐させてみました。
if Request.Form("c_1") = "on" then
とやっているのは、
送り側のhtml側で
<INPUT TYPE="CHECKBOX" NAME="c_1" VALUE="on">HTMLから詳しく丁寧に<BR>
上記 NAME="c_1"です、チェックされた時はVALUE="on"文字列のonですよ
と指定してるので、チェックの有無を= "on" で判断してます。

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">
4<INPUT TYPE="RADIO" NAME="q_5" VALUE="4">
5<INPUT TYPE="RADIO" NAME="q_5" VALUE="5">
は、ラジオボタンの選択なので、
q_5の項目名が1つです。

受け取るのは、1〜5の値なので、
if Request.Form("q_5") <= 2 then  '2以下は不満にする
など、少し遊んでみました。

/*
 * 4.流れ
*/
http://www.ken3.org/cgi-bin/test/test004-1.html
の
HTMLで<From>タグを使用して、入力フォームを作る、

送信ボタン(submit)が押されたら
ACTION="http://www.ken3.org/cgi-bin/test/test004-1.asp"
指定のurlを呼び出す。
(フォームの値を渡す)

あとは、渡された値を使用して、
test004-1.asp
内で、処理を行う。

今回は、簡単な表示だけだったけど、
通常は、データの検索やデータをファイル/DBに登録など、
データの操作のアクションが書かれると、
HTMLのリンクの紙芝居じゃなく、
おっ、サーバーで動いてるなぁと感じられると思います。

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

で、今日は何が言いたかったの?
・フォームの作り方を簡単にやった
・ASPで値の受け取り方を少々
こんな感じかな。

またね(笑)

何か質問があったら、気軽に、
メール、掲示板に書き込んでくださいね。

三流プログラマーのKen3でした。



ページフッター リンクや広告、質問送信など

三流解説を読んでいただき、どうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、※質問や感想は、気軽に送ってくださいね。

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

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

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

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

ニガテな環境設定系など
[Win2003 Server に IIS を Setup]・・・ポイントの無い、ほぼ一本道解説だけど。
[IIS 仮想ディレクトの作成とASP動作TEST]・・・Web拡張でASPを有効にしただけです。

Blog:[三流君の作業日記]/ [サンプルコードのゴミ箱]/ 広告-[通販人気商品の足跡]

質問や要望など メッセージを送る(三流君に連絡する)

質問や要望など連絡方法でお互い確認が取りやすく、便利なのが掲示板なのですが、私の対応のまずさから不定期で荒れてしまい、掲示板は現在封鎖中です。(反省しなきゃ)
感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。

あなたのお名前(ニックネーム):さん
返信は?: 不用(HP更新を待つ) , E-mail→ アドレス:に返事をもらいたい



(感想や質問・要望 メッセージはHPで記事に載せることがあります。)


急ぎで連絡がほしい、そんな時は:[三流君連絡先アドレス]を見て連絡してください。



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