0

PHP を使用して簡単なクイズ スコアリングを作成しましたが、未確認のオフセット エラーが発生しましたが、正常に動作します。

エラー:

Notice: Undefined offset: 0 in C:\Users\scorequiz1.php on line 17
Notice: Undefined offset: 1 in C:\Users\scorequiz1.php on line 18
Notice: Undefined offset: 2 in C:\Users\scorequiz1.php on line 19
Notice: Undefined offset: 3 in C:\Users\scorequiz1.php on line 20
Notice: Undefined offset: 4 in C:\Users\scorequiz1.php on line 21

Notice: Undefined offset: 0 in C:\Users\scorequiz1.php on line 52
Question 1. Correct.

Notice: Undefined offset: 1 in C:\Users\scorequiz1.php on line 52
Question 2. Incorrect.

Notice: Undefined offset: 2 in C:\Users\scorequiz1.php on line 52
Question 3. Correct.

Notice: Undefined offset: 3 in C:\Users\scorequiz1.php on line 52
Question 4. Correct.

Notice: Undefined offset: 4 in C:\Users\scorequiz1.php on line 52
Question 5. Incorrect.

17行目から21行目:

$data[0] = $_POST["a"];
$data[1] = $_POST["b"];
$data[2] = $_POST["c"];
$data[3] = $_POST["d"];
$data[4] = $_POST["e"];

行 50-56:

for($i = 0; $i < 5; $i++)
{
     if($answer[$i] == 1)
         echo "Question " . ($i+1) . ". " . "Correct.<br/>";
     else
         echo "Question " . ($i+1) . ". " . "Incorrect.<br/>";
}

私のクイズはこんな感じです。設問の選択肢には、「a」~「e」の名前と、正解をチェックする値があります

<!-- question 1---->
<INPUT TYPE="radio" NAME="a" VALUE="1">10 days<BR>
<INPUT TYPE="radio" NAME="a" VALUE="1">40 days<BR>

<!-- question 2---->
<INPUT TYPE="radio" NAME="b" VALUE="1">True<BR>
<INPUT TYPE="radio" NAME="b" VALUE="1">False<BR>

何が悪いのかわからない

4

3 に答える 3

0

あなたのコードには2つの問題があるようです

  1. 変数に値を設定し、$data変数を使用し$answerて正確性を確認しています。2 つの変数が意図的なものである場合は、データベースでそれをチェックし、$answer表示されていない別の場所に配列を作成する必要があることを意味します - そのコードも共有してください。
  2. あなたが共有したサンプル HTML にvalue="1"は、質問のすべてのオプションが書き込まれています。それがまさにコード内にある場合は、回答が選択された場合でも 1 を取得することを意味します。
于 2012-05-11T07:31:44.930 に答える
0

前半の最も可能性の高い問題は、$dataすでに別の設定になっている可能性があることです。これを試して:

$data = Array($_POST['a'],$_POST['b']...);

後半については、$answer正しく定義できていますか? あなたがそこを意味していたようです$data

補足: これを使えば、あなたのテストですぐに満点を取ることができます。

(function() {
    var qsa = document.querySelectorAll("input[type=radio]"), l = qsa.length, i;
    for( i=0; i<l; i++) if( qsa[i].value == "1") qsa[i].checked = true;
})();

それをコンソールに貼り付けるだけで、テストに正しい答えが自動的に入力されます。

于 2012-05-10T23:43:12.547 に答える
0

配列で値を参照する前に、最初に値を検証してみ
てください。通常、最初に空を使用してチェックするため、空でない場合にのみコードを実行し続けます

    if (!empty($data[0])) 
    if (!empty($answer[$i])) 
于 2012-05-11T00:25:06.753 に答える