我遇到了通过PHP从XML数据库中恢复记录的问题。
XML文件中有许多名为“”的元素,彼此具有我从PHP调用的名为“id”的属性。 当我输入除数字“1”之外的任何数字时,它不起作用。
以下是我收到的错误消息。
注意:未定义的变量:quest2 in 第58行的C:\ xampp \ htdocs \ game \ data \ quest_query.php注意:未定义 变量:C:\ xampp \ htdocs \ game \ data \ quest_query.php中的info_quest 第58行注意:未定义的变量:time_end in 第58行的C:\ xampp \ htdocs \ game \ data \ quest_query.php
我因为“if”语句而被接受这些错误。 这是代码:
<?php
$xmlStringFile = '<?xml version="1.0" standalone="yes"?>
<quests>
<quest id="1">
<ID>1</ID>
<QUEST>Katakomby pod městem</QUEST>
<INFO>Asi nevíte že pod naším krásným městem je spousta tajných chodem, které pořádně nikdo neproskoumal. Jsou tu již dlouhá staletí a údajně naši předci v nich ukryli zlatý poklad.</INFO>
<TIME>780</TIME><!-- 780 - 13 minut -->
<ITEMS1></ITEMS1>
<XPMIN>180</XPMIN>
<MONEY>800</MONEY>
<LVL>1</LVL>
</quest>
<quest id="2">
<ID>2</ID>
<QUEST>Oprava zříceného mostu</QUEST>
<INFO>Před několika dny strhla záplava starý dřevěný most u radnice. Pomoz jej opravit.</INFO>
<TIME>7200</TIME>
<ITEMS1></ITEMS1>
<XPMIN>250</XPMIN>
<MONEY>250</MONEY>
<LVL>4</LVL>
</quest>
</quests>';
$quests = new SimpleXMLElement($xmlStringFile);
if($_GET['quest'] == $quests->quest["id"]){
$quest2 = $quests->quest->QUEST;
$info_quest = $quests->quest->INFO;
$time_end = $quests->quest->TIME;
}
// echo $idquest . $quest2 . $info_quest . $time_end;
echo $_GET['quest'] . $quest2 . $info_quest . $time_end;
?>
在此先感谢,非常感谢所有帮助。
答案 0 :(得分:0)
使用xpath
选择您需要的<quest>
:
$quests = simplexml_load_string($x); // assume XML in $x
$id = 2;
$results = $quests->xpath("/quests/quest[@id='$id']");
if (isset($results[0])) $results = $results[0];
else exit("no match");
echo $results->QUEST;