0

わかりましたみんな、私はこの問題の答えをどこでも検索しましたが、問題を解決するのに運がありませんでした. question.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> 

次に、さまざまな質問番号を示すフォーム データを作成し、1 つの質問を選択する必要があります。ラジオボタンを使用して選択し、「質問」という名前の送信ボタンを定義しました。したがって、ユーザーが質問を選択して送信すると、ラジオ ボタンの値が 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 に答える