2012-04-25 59 views
1

diagram生成基於數據從兩個表或單獨的XML文件更

有兩個表,其中有一個關係(一到多)。有Meals表,其中包含早餐(id: 1),早午餐(id: 2),午餐(id: 3),茶(id: 4),晚餐(id: 5)和晚餐(id: 6)等值。然後有Foods表,其中包含各種食物,並且每種食物(即漢堡)通過外鍵與特定類型的餐(即午餐)相關聯。所以,排idfood: 12; idmeal: 3; foodname: "Hamburger"將意味着"Hamburger"Lunch膳食類型。

我創建了一個XML生成器文件,它將整個Food表的內容拖入一個XML文件中。問題是我想從Meal表中爲每個XML內的食物元素將idmeal外鍵值轉換爲實際餐名。

簡單的方法是包含來自Food表的外鍵編號,但這樣會太神祕(即漢堡包在3次時間內被吃掉)。相反,我想根據外鍵編號進行設置 - XML將從Meals表(mealname)中插入正確的值到包含食品的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(); 

?> 

回答

2

連接表在查詢中使用您的FK關係。

Select meals.mealname, food.foodname from food join meals on (food.mealid = meals.mealid) 
相關問題