0

好的,伙计们,我到处寻找这个问题的答案,但没有解决问题的运气。我创建了一个名为 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> 

然后我制作了一个表格数据,显示不同的问题编号,我必须选择一个问题。我使用单选按钮进行选择,然后定义了一个名为“问题”的提交按钮。因此,当用户选择并提交任何问题时,单选按钮值 0、1、2、3 等将通过 POST 方法传递到另一个 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 行对非对象调用成员函数 attributes()”。我真的很生气..请帮助我。

4

2 回答 2

3

$xml-> topic -> subtopic-> question[0]存在和$xml-> topic -> subtopic-> question["0"]不存在。

转换$_POST['question']为整数就可以了。

$condition= (int) $_POST['question'];

会工作。

于 2013-02-18T14:40:01.733 回答
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.
}
于 2013-02-18T14:36:19.553 回答