yomi-searchのカテゴリーを他のディレクトリーに表示-メモ2


その2
2、yomi-searchのスクリプトを活用してデータベースを読み出して表示

Mysqlを利用することに変わりはないけどせっかくのyomi-search phpのプログラムを活用するほうが合理的。
最初、うまく行かなかったから1の方法を試したのだけれど。
まず参考になったのがhoge256さんの
PHP の include, require で相対パスを指定して読み込む場合のメモ」という記事。
以下引用
この問題は、実行ファイルのディレクトリではなく、参照しているファイルのディレクトリを基にパスを取得することで回避することができます。具体的には dirname(__FILE__) を使って次のように書きます。

www/func/function.php ファイル

1
2
 
include(dirname(__FILE__) . "/../class/class.php");

これで、問題無く実行されたかと思います。

__FILE__ は PHP の定数で、現在参照中のファイルのフルパスとファイル名を表します。dirname はパス中のディレクトリを取得する関数です。なお、dirname の結果は最後に / が付かないので、上記の例のように / を付け忘れないようにしましょう。

引用終わり

とあります。

そこで唯一templateを通じて結果を書き出していないsitemap.phpをyomi-searchの上部のルートデレクトリーにコピーして

1
2
3
4
// インクルード
require 'class/db.php';
require 'functions.php';
require 'ads.php';

1
2
3
4
// インクルード
require dirname(__FILE__).'/yomi/class/db.php';
require dirname(__FILE__).'/yomi/functions.php';
require dirname(__FILE__).'/yomi/ads.php';

に変更。
これでルートディレクトリーからyomiディレクトリのインクルードファイルを読み込んで、mysqlを通じてサイトマップが表示されます。
長い間できないと思って放置していたのですがよかったです。
また、総登録数は、sitemap.phpの
// textテーブルから設定情報を配列($text)へ読込
の後ろくらいに

$total_num = $db->log_count($db->db_pre.'log');

を加えると取得できました。
ちなみにローカルのxamppの環境でもこの方法は有効です。もっと早く理解していれば無駄な時間を使わずにすんだかもしれません。hoge256さんの記事は2007年8月のものでした。すばらしい情報に感謝です。