[三流君] −−>
[ASPで遊ぶ、失敗する] −−>
[バックナンバー一覧]
−−> No.058 復習、#Include,FileSystemObject,乱数ランダム
復習、#Include,FileSystemObject,乱数ランダム
本文(発行内容)
<復習、#Include,FileSystemObject,乱数ランダム>
こんにちは、三流プログラマーのKen3です。
今回は、
復習を兼ねて、
#Include File で、ファイルをインクルードする
FileSystemObjectでテクストファイルの読み込み処理、
乱数でランダムな数値を発生
なんて感じのネタをやってみたいと思います。
拾い読みして、何かの参考となれば幸いです。
/*
* 1.今回のキッカケ
*/
テキスト広告のローテーションを作ってみたくて(笑)
いろいろと試行錯誤した結果を兼ねて、ASP系のネタにしてみました。
/*
* 2.#Include File で、ファイルをインクルードする
*/
ASPと言っても、通常は、HTML内に<% 〜 %>でスクリプトを埋め込んでます。
a.asp
<% ASP の処理A %>
<html>
<head> </head>
<body>
ヘッダ部分に目次へのリンクなど
本文
<% ASP の処理B %>
フッダ、広告など
<% ASP の処理C %>
</body>
</html>
<% ASP の処理D サブルーチンなど %>
まぁ、書き方のキレイさ(見易さなど)
位置によっていろいろとあるのですが、
こんな感じです。
大体、HPを作成する時、構成を決めます。
----
上部 HPタイトルと目次、掲示板へのリンク、、
本文があって
下部 リンクを書く人や小金稼ぎのバナー広告
----
まぁ、わかりやすく、こんな構成だとします。
すると、上部のHTMLと下部のHTMLは変わらないんですね。
なので、ひとつの方法は、雛形のHTMLファイルを作っておいて、
それを別名でコピーして修正する、そんな方法です。
※私も使ってます。
この方法でも良いのですが、
2・3ヶ月たってくると、広告を差し替えたいなぁ、
新しいカテゴリできたので、タイトルにリンクを増やしたい・・・
と共通だったはずのヘッダ、フッダを修正する時があります。
そんな時に便利な方法が、
#Includeを使ってASPを作る方法です。
使い方は簡単で、
<!-- #Include File="info.inc" -->
と外部から挿入したいファイルを書くだけです。
具体的な使い方は、
<%@LANGUAGE=VBScript%>
<html>
<head>
<title>ASP #Include File="xxxx.inc" でファイルをインクルード</title>
</head>
<body bgcolor=#ffffff text=#000000>
<!-- #Include File="info.inc" -->
<!-- ↑ヘッダの共通イメージをインクルード -->
<h2>ASP #Include File="xxxx.inc" でファイルをインクルード</h2>
test058-1.asp<br>
#Include File="xxxx.inc"とファイルをインクルードして、<br>
共通のヘッダ、フッダを使う<br>
<hr>
[<a Href="info.inc" TARGET="_blank">info.incを開く</a>]
←使用したヘッダファイル<br>
[<a Href="inc_mokuji.inc" TARGET="_blank">inc_mokuji.incを開く</a>]
←使用したフッダファイル<br>
<!-- #include file="inc_mokuji.inc" -->
<!-- ↑フッダの共通イメージをインクルード -->
</body>
</html>
ポイントは、
~~~~~~~~~~~~
<!-- #Include File="info.inc" -->
↑ヘッダの共通イメージをインクルード
<!-- #include file="inc_mokuji.inc" -->
↑フッダの共通イメージをインクルード
なんだぁ、一行単純に書いてるだけなのね(笑)
この単純に書いた一行の処理にしていると、
ヘッダやフッダのイメージを変えたい時は、
http://www.ken3.org/cgi-bin/test/info.inc
http://www.ken3.org/cgi-bin/test/inc_mokuji.inc
といったファイルの中身を変更するだけで、
実行時に読み込まれるので、表示内容を変更することが出来ます。
http://www.ken3.org/cgi-bin/test/test058-1.asp
でテストできます。イメージを確認してください。
/*
* 3.ランダムにローテーションバナーを表示させたい
*/
さてと、
#Include File を使うと、実行時にファイルを挿入可能なことがわかりました。
一歩進んだ要求だと(そんな要求私だけかもしれないけど)
ランダムでバナー広告を切り替えて表示したい。
なんて、思うかもしれません。
乱数かぁ、、、
Randomize '乱数系を初期化
nNO = Int(Rnd * 10)
で0〜9までの数を発生させられるので、
インクルードするファイルを
http://www.ken3.org/cgi-bin/inc/hed0.inc
http://www.ken3.org/cgi-bin/inc/hed1.inc
http://www.ken3.org/cgi-bin/inc/hed2.inc
・
・
http://www.ken3.org/cgi-bin/inc/hed9.inc
とバーナー広告を10種類用意しておいて、
切り替えてインクルードしてみたいです。
<% '頭で乱数の発生
Randomize '乱数系を初期化
nNO = Int(Rnd * 10) '0〜9までの乱数を発生させる
strFNAME = "/cgi-bin/inc/hed" & nNO & ".inc" 'ファイル名を作る
%>
とファイル名を作ってから、
<!-- #include file="<%=strFNAME%>" -->
で勝負、、あれれ、
Active Server Pages エラー 'ASP 0126'
インクルード ファイルが見つかりません
/cgi-bin/test/test058-2.asp, 行 22
インクルード ファイル '<%=strFNAME%>' が見つかりませんでした。
あっ、バカみたい、””で囲って文字列にしてるよ、
よし、””をはずして、
<!-- #include file=<%=strFNAME%> -->
Active Server Pages エラー 'ASP 0126'
インクルード ファイルが見つかりません
/cgi-bin/test/test058-2.asp, 行 22
インクルード ファイル 'strFNAME' が見つかりませんでした。
できないのかなぁ、
まぁ、インクルードファイルが動的に切り替わる、、
なんて用途ないしね。
自分でファイルを開いて読みますか、
<% '自分でファイルを読む
' FileSystemObjectを生成します
Set objFS = Server.CreateObject("Scripting.FileSystemObject")
' strFNAMEを読取専用モードで開きデータを読む
Set ts = objFS.OpenTextFile(Server.MapPath(strFNAME), 1, True)
Do While ts.AtEndOfStream = False 'ファイルの終端になってない間ループ
strDATA = ts.ReadLine 'ファイルからデータを一行を読む
Response.Write strDATA
Response.Write vbCRLF '改行する
Loop
'使ったファイルは閉じようよ
ts.close
Set objFS = Nothing
%>
と素直に、テキストファイルを開いて1行読み込み、出力しました。
http://www.ken3.org/cgi-bin/test/test058-2.asp
でテストできます。イメージを確認してください。
ポイントは
~~~~~~~~~~
乱数の発生前に、
Randomize '乱数系を初期化
で
乱数系の初期化。
nNO = Int(Rnd * 10)
strFNAME = "/cgi-bin/inc/hed" & nNO & ".inc" 'ファイル名を作る
でファイル名を作ったら、
しかたなく自分でFileSystemObjectを生成して、
.ReadLineで一行読み込む、.AtEndOfStreamでファイルの終端チェック
でした。
/*
* 4.終わりの挨拶 </HTML>
*/
今回は、
・インクルードファイルの使い方
・乱数の発生
・テキストファイルをFileSystemObjectで読み込み、インクルードもどき
って話でした
サクサクと、作成が進むと思ったのですが、
簡単な処理でもハマりました。
広告、切り替えても押されないよ(笑)
http://www.ken3.org/cgi-bin/test/test058-1.asp
http://www.ken3.org/cgi-bin/test/test058-2.asp
でテスト可能です。
何かの参考となれば幸いです。
素朴な疑問やリクエスト、クレームなどがあったら、
掲示板 : http://www.ken3.org/cgi-bin/bbs/asp/wforum.cgi
に気軽に書き込んでください。
ASP、VBScript勉強中の三流プログラマーのKen3でした。
フィードバック
ASP系の→[掲示板]←を覗く、質問を書き込む
評価・感想
三流君の主なリンク先
[アクセスランキング]
[サイトマップ]
[リンク先・相互リンク先など]
Ken3の日記(weblog) --
[広告・副収入系]
[プログラマー業務の愚痴]
[VBA系の話題]
[ASP系の話題]
[コンビニ系ネタ]
[その他]
その他 宣伝広告