SHOJI's Code
 仕事や趣味で書いた各種言語のプログラミングコード(エクセルVBA,PHP,C/C++/C#,JavaScript等)、その他雑記。
2017.10<<123456789101112131415161718192021222324252627282930>>2017.12
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

以前の記事で「MySQLのデータをXML形式で出力」ってのを書いたが、そのときプログラミングしたものはechoでいちいちタグを出力するものだった。
今考えるとなぜ思いつかなかったんだろう?と思うが、PHPにはちゃんとDOM関数があるじゃん(^^;

・・・ってことで書き直してみた。
<?php

header("Content-Type: text/xml; charset=utf-8");

$doc = new DOMDocument("1.0", "utf-8");

$conn = @mysql_connect("localhost", "*******", "*******");
if( !$conn ) exit;

@mysql_select_db("*******", $conn);
@mysql_query("set names utf8");

$root = $doc->appendChild( $doc->createElement("data") );

$q_category = @mysql_query("select * from CATEGORY order by ID", $conn);
while( $row_cat = @mysql_fetch_array($q_category) )
{
$cat_id = $row_cat["ID"];

$ele_cat = $root->appendChild( $doc->createElement("category") );
$ele_cat->setAttribute("id", $cat_id);
$ele_cat->setAttribute("name", $row_cat["NAME"]);

$q_shops = @mysql_query("select * from SHOP where CATEGORY=$cat_id order by ID", $conn);
while( $row_shop = @mysql_fetch_array($q_shops) )
{
$id = $row_shop["ID"];

$ele_shop = $ele_cat->appendChild( $doc->createElement("shop") );
$ele_shop->setAttribute("id", $id);
$ele_shop->setAttribute("name", $row_shop["NAME"]);
$ele_shop->setAttribute("latitude", $row_shop["LATITUDE"]);
$ele_shop->setAttribute("longitude", $row_shop["LONGITUDE"]);
$ele_shop->setAttribute("category", $cat_id);
$ele_shop->setAttribute("type", $row_shop["TYPE"]);
$ele_shop->setAttribute("initial", $row_shop["INITIAL"]);
$ele_shop->setAttribute("enabled", $row_shop["ENABLED"]);

$q_info = @mysql_query("select * from SHOP_PROPERTY where SHOP=$id order by NAME,INDEX_NO", $conn);
while( $row_info = @mysql_fetch_array($q_info) )
{
$tagname = strtolower($row_info["NAME"]);

$ele_info = $ele_shop->appendChild( $doc->createElement($tagname, $row_info["VALUE"]) );
$ele_info->setAttribute("id", $row_info["ID"]);
$ele_info->setAttribute("index", $row_info["INDEX_NO"]);
}
}
}

$q_type = @mysql_query("select * from TYPE order by ID", $conn);
while( $row_type = @mysql_fetch_array($q_type) )
{
$ele_type = $root->appendChild( $doc->createElement("type", $row_type["NAME"]) );
$ele_type->setAttribute("id", $row_type["ID"]);
$ele_type->setAttribute("icon", $row_type["ICON"]);
}

echo $doc->saveXML();

@mysql_close($conn);

?>


テーマ:PHP - ジャンル:コンピュータ
コメント
この記事へのコメント
管理人のみ閲覧できます
このコメントは管理人のみ閲覧できます
2012/04/09(月) 15:53:43 | | #[ 編集]
コメントを投稿する

管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
copyright © 2004-2006 SHOJI, Powered By FC2ブログ all rights reserved.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。