ランダム・ページ ソースと解説
1997年8月1日から書き始めたこのAvocado Mixもかなりのページ数になりました。どんな事を書いたのか忘れているページもありそうです。いちいちページを繰って見直すのも面倒なのでやっていませんが、ふと、ランダムに適当なページを開けたら面白そうだなと思いつきました。
そこで作ったのが、この上の「ランダム・ページ」ボタンです。これをトップ・ページの右上に取り付けました。ランダムというだけあって、押すたびに別のページを選出して表示してくれます。
ブロック図
これも phpで書いています。あらかじめデータベースにAvocadoMix内のhtmlページを登録しておき、乱数でそのページを選んでPCなどのユーザーのWebブラウザに送るというしくみです。
データベース・テーブルの作成
Avocado Mix制作用PCのEドライヴの該当するディレクトリで、DOSのTREEコマンドで全ファイル名をテキストファイル(filelist.txt)に出力します。11,736行ありました。
上のように制作に要するhtml以外のファイルも出てきますので、これを整理してディレクトリ名とhtmlファイル名だけにします。
このままでは乱数での選択ができませんから、識別番号(一連番号)を付ける必要があります。こういう処理はBASICの得意とするところです。
先日も登場した「十進BASIC」で以下のプログラムを作って実行しました。
これが出力されたCSVファイル(html_list.csv)です。この段階ではシフトJISですが、これをMySQL用にUTF-8に変換しておきます。
次に、Webサーバ上のMySQLでデータベース内にテーブル(filelist)を作ります。
- idフィールドは整数11桁でキー・フィールドに設定しています。
- nameフィールドは128バイトまでにしています。まあ十分でしょう。
- このテーブルに先ほど作っておいたCSVファイルをPC側からインポートします。
- 今後、現在書いているこのページのようにhtmlファイルが増えて行きますが、その都度レコードを追加して行きます。
ソース
実際の文字コードはUTF-8ですが、ここではShift-JISにして表示します。今回は画面表示はありませんので、Viewは使いません。
MVC | file name | 概要 |
---|---|---|
Controller | randompage.php | プログラムの本体 |
Model | randompage_model.php | 各関数の定義 |
controllers/addtime.php
- モデル内のget_randomfile()関数を呼んで、結果をurl$として受け取ります。
- PC等のWebブラウザをそのURLに移動させます。
models/addtime_model.php
- filelistテーブルのレコード数(idの最大値)を求めます。
- 乱数で1からレコード数(idの最大値)までの数を発生させます。
- そのidのレコードを読み出します。
- 先頭にディレクトリ移動記号を付加して返します。これは、使用しているフレームワークの仕様で、既に設定してあるディレクトリからの移動の為です。
実行例
この下のボタンを押してみてください。このボタンはトップページの右上にもあります。
2016年10月29日 記