【发布时间】:2012-04-25 19:54:22
【问题描述】:
有两个表,它们有关系(一对多)。有 Meals 表,其中包含诸如早餐(id: 1)、早午餐(id: 2)、午餐(id: 3)、茶(id: 4)、晚餐(id: 5)和晚餐(@987654328)等值@)。然后是Foods 表,其中包含各种食物,每种食物(即汉堡包)通过外键链接到特定类型的膳食(即午餐)。所以,idfood: 12; idmeal: 3; foodname: "Hamburger" 行意味着"Hamburger" 属于Lunch 餐食类型。
我创建了一个 XML 生成器文件,它将整个 Food 表的内容提取到一个 XML 文件中。问题是我想将idmeal 外键值从Meal 表中为XML 中的每个食物元素翻译成实际的膳食名称。
简单的方法是包含 Food 表中的外键号,但这太神秘了(即汉堡包在 3 次内被吃掉)。相反,我想根据外键编号来实现它——XML 会将来自Meals 表(mealname)的正确值插入到带有食物的 XML 文件中,这样我就可以打印类似“汉堡在午餐时间吃”。
生成XML.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();
?>
【问题讨论】: