好的伙计们,我到处搜索了这个问题的答案,但没有解决问题的运气。 我创建了一个名为questions.xml的xml文档。代码示例是 即
<Quiz>
<topic text="Preparation for Exam">
<subtopic text="Science">
<question text="What is the largest planet in our solar system?">
<answer num = "A" Text="Jupiter" correct="1"></answer>
<answer num = "B" Text="Venus" correct="0"></answer>
<answer num = "C" Text="Saturn" correct="0"></answer>
<answer num = "D" Text="Mars" correct="0"></answer>
</question>
<question text="What is the smallest planet?" >
<answer num = "A" Text="Pluto" correct="1"></answer>
<answer num = "B" Text="Venus" correct="0"></answer>
<answer num = "C" Text="Saturn" correct="0"></answer>
<answer num = "D" Text="Mars" correct="0"></answer>
</question>
</subtopic>
</topic>
</Quiz>
然后我制作了一个表格数据,显示了不同的问题编号,我必须选择一个问题。我使用单选按钮进行选择,然后定义了一个名为“问题”的提交按钮。 因此,当用户选择并提交任何问题时,通过POST方法将单选按钮值0,1,2,3等传递给另一个php页面。 现在在这个新的php页面中,我必须在文本字段区域中显示所需的问题。 问题是我总是得到这个愚蠢的错误“在第6行的非对象上调用成员函数属性()”。 我的代码是
<?php
$condition= $_POST['question'];
$xml = simplexml_load_file("questions.xml");
echo $condition;
if ($condition=="0"){
$question= $xml-> topic -> subtopic-> question[$condition] -> attributes()-> text."<br>";
echo "<form action='' method='post'>
<label for='question'> Question</label>
<textarea name='question' id='1' cols='45' rows='5'>".$question."</textarea>
<P><INPUT TYPE=SUBMIT VALUE='submit'> </form>";
}
?>
现在没有语法错误,程序显示echo $ condition,但是它不显示问题总是显示“在第6行的非对象上调用成员函数属性()”。我真的很生气..请帮助我。
答案 0 :(得分:3)
$xml-> topic -> subtopic-> question[0]
存在且$xml-> topic -> subtopic-> question["0"]
没有。
将$_POST['question']
转换为整数可以解决问题。
$condition= (int) $_POST['question'];
会起作用。
答案 1 :(得分:0)
首先检查,您收到用户输入,因此无法设置或可以是任何字符串。
转换为int:
$condition = (isset($_POST['question'])) ? (int) $_POST['question'] : "some default value" ;
if (isset($xml-> topic -> subtopic-> question[$condition]) && is_object($xml-> topic -> subtopic-> question[$condition])){
$question= $xml-> topic -> subtopic-> question[$condition] -> attributes()-> text."<br/">
//and so on.
}