BusMap2のDBにアクセスするにはphpMyAdminを使うのが一つの手だが、ちょっと複雑なSQL文を'sql窓'で毎回書くのは面倒。そこでPHPのスクリプトを書いてアクセスしてみよう。
スクリプトを、(xoopsルート)/modules/BusMap2の下に次のようなinclude文等を書くことにより得できる。(他のスクリプトと混ざらないように作業用のディレクトリを作ってその下におくこともありえる。)
<?php include_once("../../../mainfile.php"); // サブディレクトリに置くときは、相対パスを指定 global $xoopsDB; /* データベース名を得るには $xoopsDB->prefix()関数を利用 */ $StopTable = $xoopsDB->prefix("BusMap2_BusStop"); $PlatTable = $xoopsDB->prefix("BusMap2_Platform"); /* SQLクエリ (知りたいことに合わせてsql文を書く */ $res = $xoopsDB->query("select s.name as name, p.ID as pid , s.ID as sid from $StopTable as s, $PlatTable as p where p.BusStopID = s.ID and s.IsMain=1") or die ($xoopsDB->error()); /* 取得したデータを処理 */ while($row = $xoopsDB->fetchArray($res)) { echo $row['pid'] ."," . $row['sid'].",". $row['name']."<br>"; } ?>
phpのSimple-XMLと呼ばれる拡張モジュールが便利。
マニュアルの
<?php $FP = fopen("12_54.xml","r"); $string = fgets($FP); $xml = simplexml_load_string($string); //print_r($xml); // $xmlを全部表示させてみて、どのように取り出せばよいか確認 $n = count($xml->stops->stop); $start = $xml->stops->stop[0]; $end = $xml->stops->stop[$n-1]; echo "start: PlatId=" . $start['platId'] .", name='". $start['desc'] . "', time='" . $start['time'] . "'\n"; echo "end: PlatId=" . $end['platId'] .", name='". $end['desc'] . "', time='" . $end['time'] . "'\n"; ?>