関係(1対多)を持つ2つのテーブルがあります。Meals
Breakfast(id: 1
)、Brunch(id: 2
)、Lunch(id: 3
)、Tea(id: 4
)、Dinner(id: 5
)、Supper( )などの値を含むテーブルがありますid: 6
。次に、Foods
さまざまな食品を含むテーブルがあり、各食品(つまりハンバーガー)は外部キーを介して特定の種類の食事(つまりランチ)にリンクされています。したがって、行はそれが食事タイプでidfood: 12; idmeal: 3; foodname: "Hamburger"
あることを意味します。"Hamburger"
Lunch
Food
テーブル全体の内容をXMLファイルにプルするXMLジェネレーターファイルを作成しました。問題は、 XML内の各食品要素のテーブルidmeal
から、外部キー値を実際の食事名に変換したいということです。Meal
簡単な方法は、テーブルの外部キー番号を含めることFood
ですが、それはわかりにくいでしょう(つまり、ハンバーガーは3回食べられます)。代わりに、外部キー番号に基づいてそれを作成したかったのです。XMLは、Meals
tables(mealname
)の正しい値を食品を含む1つのXMLファイルに挿入して、「ハンバーガーは昼食時に食べられます」のように印刷できるようにします。 。
GenerateXML.php:
<?php
require("includes/credentials.php");
$doc = new DOMDocument("1.0");
$node = $doc->createElement("foods");
$parnode = $doc->appendChild($node);
$connection=mysql_connect($host, $usr, $pass);
if (!$connection) {
die('Not connected : ' . mysql_error());
}
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
die ('Can\'t use db : ' . mysql_error());
}
$query = "SELECT * FROM food";
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
header("Content-type: text/xml");
while ($row = @mysql_fetch_assoc($result)){
$node = $doc->createElement("food");
$newnode = $parnode->appendChild($node);
$newnode->setAttribute("idfood", $row['idfood']);
$newnode->setAttribute("idmeal", $row['idmeal']);
$newnode->setAttribute("foodname", $row['foodname']);
}
echo $xmlfile = $doc->saveXML();
?>