ランダム・ページ ソースと解説

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)を作ります。

  1. idフィールドは整数11桁でキー・フィールドに設定しています。
  2. nameフィールドは128バイトまでにしています。まあ十分でしょう。
  3. このテーブルに先ほど作っておいたCSVファイルをPC側からインポートします。
  4. 今後、現在書いているこのページのようにhtmlファイルが増えて行きますが、その都度レコードを追加して行きます。

ソース

実際の文字コードはUTF-8ですが、ここではShift-JISにして表示します。今回は画面表示はありませんので、Viewは使いません。

MVCfile name概要
Controllerrandompage.phpプログラムの本体
Modelrandompage_model.php各関数の定義

controllers/addtime.php

  1. モデル内のget_randomfile()関数を呼んで、結果をurl$として受け取ります。
  2. PC等のWebブラウザをそのURLに移動させます。

models/addtime_model.php

  1. filelistテーブルのレコード数(idの最大値)を求めます。
  2. 乱数で1からレコード数(idの最大値)までの数を発生させます。
  3. そのidのレコードを読み出します。
  4. 先頭にディレクトリ移動記号を付加して返します。これは、使用しているフレームワークの仕様で、既に設定してあるディレクトリからの移動の為です。

実行例

この下のボタンを押してみてください。このボタンはトップページの右上にもあります。

2016年10月29日 記