大人気:[花王ヘルシア緑茶の通信販売]←体脂肪が気になる人・毎日1本単位で買うのが面倒な人

Active Server Pages で ネットワークゲームを作ろう


有料メルマガですが、2004/06月で発行中止、廃刊となります。一年続けてみましたが、有料のレベルになっていなく、これといったツール作りまでいかなかったです。読者からの質問メールは励みになりました。無料版で不定期に書いているので、たまには覗きに来て下さい。

サンプルです、読んで下さい

有料版では、履歴書に書けるゲームぐらいは、作りたいですよね
*はやめにキャラ登録ぐらいは作りたいですね。
月300円(有料)なので損しないように事前判断して下さい
~~~~~~~*相性もあると思うので、、ちなみに私はAB型の変わり者タイプです。(笑)

<乱数と入力画面>

どうも、三流プログラマーのKen3です。 このメルマガでは、 ネットで遊べるゲームを作って、行きたいと思います。 *できたら、一攫千金当てたいけど、  そんな流行るゲームはムリだと思うので(オイオイ)、  就職の面接の時、私は http://www.xxx.xxx/xxxx  でネットゲームみたいなの作ってましたと会社に宣伝できたり、  仲間内でかわったことやってるんだぁ的なことを言われてみたい、  そんなささやかな目標を立ててみます。 なかなか、構想まとまらないですね。 ゲーム作りは難しいですね。。。 アイデアなどあったら、 qaqaqa@ken3.org へ送ってください。よろしくお願いします。

/* * 2.乱数 */

ゲームって、固定処理じゃないので、乱数を使います。 乱数の使い方は簡単で、 Randomize で乱数系を初期化 Rnd で乱数を発生です。 <%@LANGUAGE=VBScript%> <html> <head><title>No.002-1</title></head> <body bgcolor="#ffffff"> 002-1.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みたいな感じで使用しました。

/* * 3.パスワードの簡単なチェック */

ASP、ASPと騒いでいても、 HTMLフォームタグのタグで入力されたデータを 受け取って処理しているだけです。 パスワード:<INPUT TYPE="password" NAME="pass" SIZE="12"> なんて、1行、入力のための処理を作成すればOKです。 ポイントは、TYPE="password"です。 ユーザーIDとパスワードを入力させるフォームを 下記のような感じで作りました。 <html> <head> <title>パスワードの入力テスト</title> </head> <body> <h2>パスワードの入力テスト</h2> <br> <FORM ACTION="002-1.asp" METHOD="POST"> USER ID:<INPUT TYPE="text" NAME="userid" SIZE="20"><br> パスワード:<INPUT TYPE="password" NAME="pass" SIZE="20"><br> <INPUT TYPE="submit" VALUE="ログイン"> <INPUT TYPE="reset" VALUE="クリア"> </FORM> </body> </html> データの受け取りも、普通に、 Request.Form("userid") Request.Form("pass") で受け取れます。 簡単なチェックをIf文でしてみました。 <%@LANGUAGE=VBScript%> <html> <head> <title>パスワードのチェック</title> </head> <body> <h2>パスワードのチェック</h2> <br> ID=<%=Request.Form("userid")%><br> PASS=<%=Request.Form("pass")%><br> を受け取りました。<br> <% 'ID=guest Pass=ken3 だったら、OKにする If Request.Form("userid") = "guest" And Request.Form("pass") = "ken3" Then Response.Write "<h2>パスワードOK、ようこそ</h2>" Else Response.Write "<font color='red'>パスワードが違います</font>" End If %> <HR> 終了です。なんか変だけど<br> </body> </html> って、これって、ユーザー別じゃなく、固定のID、パスなら使えるけど、 あまりいみないジャン。 DBにユーザー登録しないと。。。

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

正直、これがゲーム作りなんだぁ、、、までの道のりは長そうです。 気長に待てる人は、購読続けて下さい。 *解説、長くかかりそうなので。 補足(連絡用マガジン発行)で、細かく説明を発行します。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ゲーム、プログラム作りは簡単で面白いなぁと感じるような 解説/メールマガジンを書きたいと思ってます。 よろしくお願いします。 AB型の変わり者、三流プログラマーのKen3でした。

<ログインもどきを作る>

どうも、三流プログラマーのKen3です。 このメルマガでは、 ネットで遊べるゲームを作って、行きたいと思います。 *できたら、一攫千金当てたいけど、  そんな流行るゲームはムリだと思うので(オイオイ)、  就職の面接の時、http://www.xxxx.xxx/game/  でネットゲームみたいなの作ってましたと会社に宣伝できたり、  仲間内でかわったことやってるんだぁ的なことを言われてみたい、  そんなささやかな目標を立ててみます。 なかなか、構想まとまらないですね。 ゲーム作りは難しいですね。。。 アイデアなどあったら、 qaqaqa@ken3.org へ送ってください。よろしくお願いします。

/* * 2.やっとDBからログインもどきを作る */

データーベース http://www.ken3.org/cgi-bin/g/data.mdb に user_mstテーブルを作り、フィールドは、 ID pass キャラクタ名 ログイン回数 更新日 と項目を設定しました。 http://www.ken3.org/cgi-bin/g/index.html にログイン画面を作成しました。 フォームでIDとパスワード2つの入力です。 <html> <head> <title>けんぞうのへんてこな世界へようこそ</title> </head> <body bgcolor=#ffffff text=#000000> <center> <h2>けんぞうのへんてこな世界へようこそ</h2> <br> <table bolder=1> <FORM ACTION="login.asp" METHOD="POST"> USER ID:<INPUT TYPE="text" NAME="userid" SIZE="20"><br> パスワード:<INPUT TYPE="password" NAME="pass" SIZE="20"><br> <INPUT TYPE="submit" VALUE="ログイン"> <INPUT TYPE="reset" VALUE="クリア"> </FORM> </table> </center> </body> </html> 入力されたら、ACTIONでlogin.aspを呼ぶだけです。

/* * 3.IDとパスワードをDBから取り出し、チェックする */

呼ばれたlogin.aspでIDとパスワードをチェックします。 <%@LANGUAGE=VBScript%> <html> <head> <title>ログイン</title> </head> <body bgcolor=#ffffff text=#000000> <% Call START()%> <HR> 終了、物足りないけど<br> </body> </html> <%
Sub START()

  ret = USERCHK()
  if ret = 0 then
     Response.Write "<hr>"
     Response.Write "正常終了<br>"
     Response.Write "ここにメニューがでるようにする<br>"
  end if

  if ret = -1 then
     Response.Write "<hr>"
     Response.Write "ユーザーIDが登録されてません<br>"
     Response.Write "ここに再ログインがでるようにする<br>"
  end if

  if ret = -2 then
     Response.Write "<hr>"
     Response.Write "パスワードが違います<br>"
     Response.Write "ここに再度パスワード入力がでるようにする<br>"
  end if

End Sub
Function USERCHK()

  '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("data.mdb")
  'やっとデータベースを開ける
  db.open

  'SQL文を作る
  strSQL = "Select * From user_mst "  'ユーザーマスター(*)セレクト
  strSQL = strSQL & "WHERE ID = '" & Request.Form("userid") & "' " 

  'お約束のレコードセットの作成 SQL文の発行
  Set rs = db.Execute(strSQL)

  'ユーザーIDが存在したか?
  If rs.EOF = True Then  'データ無しの時
    USERCHK = -1
    rs.Close '開いていたレコードセットを閉じる
    db.Close 'データベースも閉じようよ
    Set db = Nothing 'お行儀よくオブジェクトも開放しましょう
    Exit Function
  End If

  'パスワードのチェック
  If rs.Fields.Item("pass") <> Request.Form("pass") Then
    USERCHK = -2
    rs.Close '開いていたレコードセットを閉じる
    db.Close 'データベースも閉じようよ
    Set db = Nothing 'お行儀よくオブジェクトも開放しましょう
    Exit Function
  End If

  USERCHK = 0   '正常

  'データの表示を行う
  Response.Write "<H2>"
  Response.Write rs.Fields.Item("キャラクタ名")
  Response.Write "さん、ようこそ</H2>"
  Response.Write "<HR>"

  Response.Write rs.Fields.Item("ログイン回数")
  Response.Write "回目ですね、前回ログインは"
  Response.Write rs.Fields.Item("更新日")
  Response.Write "でした。<br>"

  rs.close

  '更新用のSQL文を作る
  strSQL = "UPDATE user_mst "  'ユーザーマスター(*)セレクト
  strSQL = strSQL & " Set ログイン回数 = ログイン回数 + 1"
  strSQL = strSQL & ", 更新日 = #" & Now & "#"
  strSQL = strSQL & " WHERE ID = '" & Request.Form("userid") & "' " 

  'SQL文の発行
  db.Execute(strSQL)

  db.Close 'データベースも閉じようよ
  Set db = Nothing 'お行儀よくオブジェクトも開放しましょう

End Function
%>
Accessのデータベースを使うときのおまじないです。 '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("data.mdb") 'やっとデータベースを開ける db.open とやって、指定したデータベースを開きます。 データを取出すには、SQL文を作成し、 発行、結果のレコードセットを作ります。 'SQL文を作る strSQL = "Select * From user_mst " 'ユーザーマスター(*)セレクト strSQL = strSQL & "WHERE ID = '" & Request.Form("userid") & "' " 'お約束のレコードセットの作成 SQL文の発行 Set rs = db.Execute(strSQL) そのレコードセットに対して、 If rs.EOF = True Then 'データ無しの時 や If rs.Fields.Item("pass") <> Request.Form("pass") Then を行い、チェックして、結果を返してます。

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

正直、これがゲーム作りなんだぁ、、、までの道のりは長そうです。 http://www.ken3.org/cgi-bin/g/index.html でやっとIDのチェックができたけど、 新規ユーザーの登録画面がまだだし、 パスワードの変更画面も。 あと、メインの戦闘処理が手付かずだし、、、、 気長に待てる人は、購読続けて下さい。(スミマセン、、、) *解説、長くかかりそうなので。 補足(連絡用マガジン発行)で、細かく説明を発行します。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ゲーム、プログラム作りは簡単で面白いなぁと感じるような 解説/メールマガジンを書きたいと思ってます。 よろしくお願いします。 AB型の変わり者、三流プログラマーのKen3でした。

<POST/GETの値を表示する>

どうも、三流プログラマーのKen3です。

/* * 2.確認用のツールを自分で作る */

HTMLでフォームのやりとり、、 <FORM ACTION="XXX"> で行うのですが、データを確認しにくいので、 自分で確認用のツール(データを受けて表示)を作ってみます。 <%@LANGUAGE=VBScript%> <html> <head> <title>POST(Request.Form)/GET(Request.QueryString) で 送られてきた値を表示する </title> </head> <body> <h2>POST(Request.Form)/GET(Request.QueryString) で 送られてきた値を表示する</h 2> look.asp<br> <hr> <b>フォームから送られて来た値を表示します</b><br> <font color="red">Request.ServerVariables("REQUEST_METHOD")でPOST/GETを判断</fo nt><br> <font color="blue">For Each で 値を表示する</font><br> <hr> Request.ServerVariables("REQUEST_METHOD")=<b><%=Request.ServerVariables("REQUES T_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>Request.Form(&quot;<b>" & RF & "</b>&quot;)</TD>" '名称表示 Response.Write "<TD>" & Request.Form(RF) & "</TD></TR>" '値の表示 Next Response.Write "</TABLE>" Else 'GET 'For Each で Request.QueryStringの値を取出す For Each RQ In Request.QueryString Response.Write "<TR><TD>Request.QueryString(&quot;<b>" & RQ & "</b>&quot; )</TD>" '名称表示 Response.Write "<TD>" & Request.QueryString(RQ) & "</TD></TR>" '値の表示 Next Response.Write "</TABLE>" Response.Write "<HR>" Response.Write "Request.ServerVariables(&quot;QUERY_STRING&quot;) =" Response.Write Request.ServerVariables("QUERY_STRING") Response.Write "<br>" End If %> Request.ServerVariables("HTTP_USER_AGENT")= <%=Request.ServerVariables("HTTP_USER_AGENT")%> <br> Request.ServerVariables("REMOTE_ADDR")= <%=Request.ServerVariables("REMOTE_ADDR")%> <hr> 終了です。<br> <hr> </body> </html> 使用方法:は簡単で、 フォームの送信先をテスト時に、 <FORM ACTION="xxxxx.asp" METHOD="POST"> <FORM ACTION="xxxxx.asp" METHOD="GET"> のACTION="XXXXXX"から、 FORM ACTION="http://www.ken3.org/cgi-bin/tools/look.asp" METHOD="POST" FORM ACTION="http://www.ken3.org/cgi-bin/tools/look.asp" METHOD="GET" に変更します。 フォームから送信ボタンを押されて呼ばれると、項目別に値を表示します。

/* * 3.ASPできます・・・のレベルには程遠く・・・ */

このメルマガでは、 ネットで遊べるゲームを作って、行きたいと思います。 *できたら、一攫千金当てたいけど、  そんな流行るゲームはムリだと思うので(オイオイ)、  就職の面接の時、http://www.ken3.org/  でネットゲームみたいなの作ってましたと会社に宣伝できたり、  仲間内でかわったことやってるんだぁ的なことを言われてみたい、  そんなささやかな目標を立ててみます。 が、 面接時の履歴書に http://www.ken3.org/ でツール作ってますのまでの道のりは遠く・・・

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

正直、これがゲーム作りなんだぁ、、、までの道のりは長そうです。 本題のゲームシステムをハヤクつくらないと、、、 月額300円は高いので(作者本人も詐欺みたいな内容しか書いていないと思うので) 気長に待てる人は、購読続けて下さい。(スミマセン、、、) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *解説、長くかかりそうなので。 ゲーム、プログラム作りは簡単で面白いなぁと感じるような 解説/メールマガジンを書きたいと思ってます。 よろしくお願いします。 AB型の変わり者、三流プログラマーのKen3でした。

<値を受取り、判断を行う>

どうも、三流プログラマーのKen3です。

/* * 2.ジャンケンをしてみる */

1グー、2チョキ、3パーの値を受取りコンピュータとジャンケンを行います。 HTMLでフォームのやりとりは、、 <FORM ACTION="XXX"> で行います。 <FORM ACTION="g001.asp" METHOD="GET"> あなたの手は?<br> <INPUT TYPE="RADIO" NAME="DATA" VALUE="1">1.グー<br> <INPUT TYPE="RADIO" NAME="DATA" VALUE="2">2.チョキ<br> <INPUT TYPE="RADIO" NAME="DATA" VALUE="3">3.パー<br> <INPUT TYPE="submit" VALUE="勝負する"><br> </FORM> こんな感じで、ラジオボタンの選択にしてみました。 GETで送信しているので、 D = Request.QueryString("DATA") 'データを代入 とQueryStringで受けます。 あとは、乱数でコンピュータの手1から3を発生させて判断してます。 http://www.ken3.org/cgi-bin/g/g001.asp?DATA=1 グー http://www.ken3.org/cgi-bin/g/g001.asp?DATA=2 チョキ http://www.ken3.org/cgi-bin/g/g001.asp?DATA=3 パー <%@LANGUAGE=VBScript%> <html> <head> <title>ジャンケンゲームで遊ぶ</title> </head> <body> <h2>ジャンケンゲームで遊ぶ</h2> 受取ったパラメータは<br>[<%=Request.QueryString("DATA")%>]<hr> <% 'Lenで変数の長さをチェックする D = Request.QueryString("DATA") 'データを代入 If Len(D) = 1 Then 'データあり Call HANTEI(D) '判断用の関数を呼ぶ End If %> <HR> <FORM ACTION="g001.asp" METHOD="GET"> あなたの手は?<br> <INPUT TYPE="RADIO" NAME="DATA" VALUE="1">1.グー<br> <INPUT TYPE="RADIO" NAME="DATA" VALUE="2">2.チョキ<br> <INPUT TYPE="RADIO" NAME="DATA" VALUE="3">3.パー<br> <INPUT TYPE="submit" VALUE="勝負する"><br> </FORM> <br> </body> </html> <% '乱数を発生させて勝負する
Sub HANTEI(strNO)  'ユーザーの手を受取り判断する

    Dim nCON  'コンピュータの手1〜3の数値が入る
    Dim nPC   'ユーザーさんの手
    Dim strTE(3) '(*1)配列変数を宣言

    strTE(1) = "グー"   '(*2)配列にメッセージを代入
    strTE(2) = "チョキ"
    strTE(3) = "パー"

    '入力値の判断、エラーならメッセージを表示させ抜ける
    'If文で1,2,3以外を判断する
    If strNO <> "1" And strNO <> "2" And strNO <> "3" Then
        Response.Write "[" & strNO & "]は不正な入力です"
        Exit Sub  '<--Exit Subを使用してここでプログラムを抜ける
    End If

    'コンピュータの手を決定
    Randomize   ' 乱数発生ルーチンを初期化します。
    nCON = Int((3 * Rnd) + 1)  '1 から 3 までの乱数を発生させます。

    '結果判断と表示
    'ユーザーの手を表示する
    nPC = CInt(strNO) 'CInt関数で数値型に変換する
    Response.Write "あなたの手は" & strTE(nPC) & "です<br>" '(*3)ここでnPC番目を表示

    '(*4)同様にコンピュータの手を表示する
    Response.Write "コンピュータの手は" & strTE(nCON) & "です<br>"

    '結果の判断
    'まず、引き分けを判断
    If nPC = nCON Then Response.Write "引き分けです<br>"

    '次に自分が勝ちの手を判断 グーvsチョキ,チョキvsパー,パーvsグー
    If nPC = 1 And nCON = 2 Then Response.Write "アナタの勝ちです<br>"
    If nPC = 2 And nCON = 3 Then Response.Write "アナタの勝ちです<br>"
    If nPC = 3 And nCON = 1 Then Response.Write "アナタの勝ちです<br>"

    'コンピュータが勝ちか判断 グーvsパー,チョキvsグー,バーvsチョキ
    If nPC = 1 And nCON = 3 Then Response.Write "私(コンピュータ)の勝ちです<br>"
    If nPC = 2 And nCON = 1 Then Response.Write "私(コンピュータ)の勝ちです<br>"
    If nPC = 3 And nCON = 2 Then Response.Write "私(コンピュータ)の勝ちです<br>"

End Sub
%>
こんな感じです。

/* * 3.面接時の履歴書に自己アピールのURLを・・・のレベルには程遠く・・・ */

当面の目的、 就職の面接の時、http://www.ken3.org/ でネットゲームみたいなの作ってましたと 自己アピールの宣伝・・・ そんなささやかな目標を立ててますが、これだと不採用かなぁ(笑)

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

正直、これがゲーム作りなんだぁ、、、までの道のりは長そうです。 http://www.ken3.org/cgi-bin/g/g001.asp?DATA=1 グー http://www.ken3.org/cgi-bin/g/g001.asp?DATA=2 チョキ http://www.ken3.org/cgi-bin/g/g001.asp?DATA=3 パー でテストできます。 本題のゲームシステムをハヤクつくらないと、、、 月額300円は高いので(作者本人も詐欺みたいな内容しか書いていないと思うので) 気長に待てる人は、購読続けて下さい。(スミマセン、、、) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *解説、長くかかりそうなので。 ゲーム、プログラム作りは簡単で面白いなぁと感じるような 解説/メールマガジンを書きたいと思ってます。 よろしくお願いします。 AB型の変わり者、三流プログラマーのKen3でした。

<総集編 穴だらけのASP解説ぶりに本人もびっくり(笑)>

こんにちは、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.今日はリンクが多過ぎて、目が疲れた(笑

Active Server Pages (ASP) を使用して、ネットワーク上のRPG的なゲームを作ります(作っていきます)。
データベースへのキャラ登録、掲示板やチャット、メール送信機能などを実装させて仮想世界のゲームを作りながら楽しみたいですね。

まず、環境をそろえないとね。

Win2000プロフェッショナルにIISをインストールする方法を簡単に書きます。
まず、コントロールパネルのアプリケーションの追加と削除を選択します


次にWindowsコンポーネントの追加と削除を選択します


スクロールさせインターネット インフォメーション サービスにチェックを入れ、
次へをクリックします。


インストールが開始されます。
たぶんCDを入れろと言われるので(笑)、CDを用意して置いてください。






↑しばらくすると完了します。
再起動メッセージが出たら再起動します。
また、コントロールパネルを開いて、
管理ツールを選択
パーソナルWebサーバーを選択




すると、下記の管理画面が表示されます。
私のコンピュータ名がZ1なので、http://z1と表示されてます。
詳細設定のボタンを押します。

詳細オプションを設定します。
ここでは、テストで使用するエリアを設定します。
1.ディレクトリには、事前にさくせいしたフォルダーを入力します。
私はD:\ASP-WORKとテスト用のフォルダーを作成し、指定しました。
2.エイリアスには、好きな名前を付けます。
ここで付けた名前でアクセスされます。
私はtestとつけたので、http://z1/test/とアクセスすると
D:\ASP-WORKのデータを見に行きます
3.実行アクセス権の設定
ASPを実行させたいので、スクリプトのみをチェックします






仮想ディレクトリtestが追加されます


お待ちかね、テストです
D:\ASP-WORKの下にtest.htmlを作成します。
まぁ普通にエクスプローラーからクリックしても起動しますが、
http://z1/test/test.html
とアドレスを入れて下さい。
下記のように表示されましたか?


次にASPファイルを作成します。
同じようにD:\ASP-WORKにファイルを作成・保存し、
http://z1/test/test.asp
とアドレスを入力します。
無事にASPファイルが動作しましたか?




自己満足の世界ですが、社内Webや家庭内Webを自分のマシーンで
簡単にできます。
*外部に公開するテクを磨いたら、設定方法を書きたいと思います
それまでは、ローカルなテストとレンタルサーバーで公開の組み合わせかなぁ私は


ヘルプファイルみたいよね


ExcelやAccessのヘルプは、
F1を押すと見れます。(メニューのヘルプからでもOKです)

さて、どこに埋まっているのでしょうか?


2.IIS関係のマニュアルはどこに?



IISをインストールしたマシーンで
http://localhost/
それかマシーン名を指定して
http://z1/
とやると(Z1はマシーン名)
http://localhost/localstart.asp
が走ります。


と同時に
http://localhost/iishelp/iis/misc/default.asp
のウインドウが開かれます
(私のマシーンでは開かれてます)

ここかぁ、IIS関係のヘルプは。
いろいろと調べられるかなぁ。


セキュリティ上サンプルを実行されるのが好ましくない
との理由で、IISがインストールされてても、
カットしてる場合もありそうだし。

気を取り直して、
自分の使っている端末から、
http://z1/ (IISをセットアップしたマシーンを見る)
と起動させてみるか。

なにぃ?工事中?


直接指定で
http://z1/iishelp/iis/misc/default.asp
(http://localhost/ をz1に変更してみた)

なんとか、無事表示されました。

Z1は私の環境なので、自分の環境に合わせて試してみて下さい。


3.VBScript のマニュアルはどこに?



さてと、VBスクリプトのヘルプを見るか。
目次から探っていってと、
えっ、ホームページに飛んでけって?



VBScript リファレンス
VBScript リファレンスは、
http://www.microsoft.com/japan/developer/scripting/default.htm
で参照できます。

見に行くと、
http://www.microsoft.com/japan/msdn/scripting/default.asp

にリダイレクトされて、メニューが表示された。



メニューの中の
VBScript ドキュメント を押して進むと。

VBScript
VBScipt ユーザーズ ガイド
VBScript ランゲージ リファレンス
とさらにサブメニュー。

ランゲージを選択してみるか。

おっ、ここで関数とかのリファレンスが見れますね。
前にやった
InStr関数は、
http://www.microsoft.com/japan/msdn/library/ja/script56/html/vsfctInStr.asp
で見ることが出来ます。

ネットにつながってから見に行く方法だと、
作業効率がなんか悪いけど、いつも最新が見れるからいいのかなぁ。
回線が速ければ、各ローカルマシーンにヘルプが入ってるよりは、
資源の節約にもなるしね。

逆にHDに余裕がある人は
(私は、巡回ソフトを持っていないのでなんとも言えないけど)
ローカルHDに、関数の解説ページを保存すれば、
マニュアルが便利に使えるかも?


今回は、
・IISのヘルプは?どこ見るの?
・VBScript、ASPのヘルプは?
でした。

素朴な疑問あったら、気軽に、掲示板に書き込んでくださいね。
掲示板に遠慮無く....

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


以上、有料版のお知らせでした

*無料版のバックナンバー見て、文体や内容、作者と相性が良さそうだったら、
ぜひ登録して下さい。待ってます。




_ _


無料メルマガ 三流君のHP主な飛び先
VBAで楽しくプログラミング [ 最新情報 ] [ 掲示板 ] [ バックナンバー ] [ メルマガ登録/解除 ]
ASPで遊ぶ、失敗する [ 最新情報 ] [ 掲示板 ] [ バックナンバー ] [ メルマガ登録/解除 ]
AB型三流PG 業務のグチ [ 最新情報 ] [ 掲示板 ] [ バックナンバー ][ メルマガ登録/解除 ]
コンビニのオモテとウラ話 [ 最新情報 ] [ 掲示板 ] [ バックナンバー ] [ メルマガ登録/解除 ]

[Ken3の日記(weblog)]