【发布时间】:2013-11-14 16:04:49
【问题描述】:
我有 2 张桌子,第一张存储餐厅信息,第二张存储每张桌子上供应的菜肴。它们使用 res_id 链接。
1) info_main [id, res_id, res_name,res_pc] 2) 菜品[id,dishName,price,res_id(外键)]
我的 SQL 查询是
$query = "SELECT * FROM info_main LEFT JOIN dishes ON info_main.res_id = dishes.res_id";
我将查询结果插入到一个工作正常的 xml 文件中。下面是代码:
$query = "SELECT * FROM info_main LEFT JOIN dishes ON info_main.res_id = dishes.res_id";
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
header("Content-type: text/xml");
echo '<markers>';
// Iterate through the rows, printing XML nodes for each
while ($row = @mysql_fetch_assoc($result)){
// ADD TO XML DOCUMENT NODE
echo '<marker> ';
echo '<detail1>';
echo '<resdetails ';
echo 'name="' . parseToXML($row['res_name']) . '" ';
echo 'id="' . parseToXML($row['res_ID']) . '" ';
echo 'pc="' . parseToXML($row['res_pc'] ). '" ';
echo '/>';
echo '<dishdetails ';
echo 'name="' . parseToXML($row['dishName']) . '" ';
echo 'price="' . parseToXML($row['price']) . '" ';
echo '/>';
echo '</detail1>';
echo '</marker>';
}
这很好,但是如果一家餐馆在数据库中有 3 道菜,那么 xml 创建 3 个节点: 像这样:
我想要这样的xml结构
<detail1>
<resdetails name="spoted dog" id="xyz" pc="xyz"/>
<dishdetails name="bean burger" price="1" />
<dishdetails name="cheese and tomato panini" price="3" />
<dishdetails name="veg salad" price="2" />
</details1>
我不知道如何实现上述 xml 结构。非常感谢您的帮助。谢谢
【问题讨论】:
-
所以...你只是想要一个
<detail>的所有行的一部分吗? -
您需要循环一次以创建您的关键数据,即 resdetails,然后再次循环以取出菜肴。或检查最后使用的 res 名称,以免重复