BusMap2関連研究Tips

BusMap2のデータベースから必要な情報を抜き出す

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>";
}
?>

XML文字列の取扱い

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";
?>