1

ダイアグラム

関係(1対多)を持つ2つのテーブルがあります。MealsBreakfast(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は、Mealstables(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();

?>
4

1 に答える 1

2

クエリでテーブルを結合して、FK 関係を利用します。

Select meals.mealname, food.foodname from food join meals on (food.mealid = meals.mealid)
于 2012-04-25T20:00:52.383 に答える