0

私はトリビアゲームを作成しています、それがどのように機能するか:

インデックス ページに移動します。

システムは、配列からランダムな質問を生成します。ユーザーが質問に答える

問題が正しければ、システムは「正しい答え」をエコーし​​、新しい問題を生成します。質問が配列内の回答と等しくない場合、システムは「間違った回答」をエコーし​​、新しい質問を生成します。

質問の生成の一部を行いましたが、一致する回答に問題があります - 質問に回答すると、送信をクリックした後、質問が自動的に変更されるため、randomQuestion が同じままでない限り、回答が正しくなくなります。

私の友人は、ランダムな質問の部分にはセッションを使用する必要があると言いましたが、それ以外は何もしませんでした。どうすればいいのかよくわかりません。本当に迷っています。

これは私のコードです: 質問の生成

    <?php
session_start();

$questions = array(array('What is Google?', 'god'),
                    array('What is God?', 'gode'),
                    array('Why is god?', 'godee'));


$randomQuestion = array_rand($questions);

$question1 = $questions[0][0];
$question2 = $questions[1][0];
$question3 = $questions[2][0];

if ($randomQuestion == 0 && !isset($_SESSION['question1'])) {
    echo $question1;

} else if ($randomQuestion == 1 && !isset($_SESSION['question2'])) {
    echo $question2;

} else if ($randomQuestion == 2 && !isset($_SESSION['question3'])) {
    echo $question3;

}
?>

フォーム + 一致する回答 このスクリプトは現在、テストとして質問 1 のみをチェックしています。

<form action="index.php" method="post">
    <input type="text" name="answer">
    <input type="submit" value="Answer it!">
</form>

<?php
    $answer = $_POST['answer'];
    if (!empty($answer)) {
        if ($randomQuestion == 0) {
            if ($answer == $questions[0][1]) {
                echo 'Correct Answer!';
                unset($_SESSION['question1']);
                unset($_SESSION['question2']);
                unset($_SESSION['question3']);
            }
        } else {
            echo 'Answer is incorrect.';
            return;
        }
    } else {
    echo 'Field is empty';
    return;
    }
session_destroy();
?>

私が考えたこと:

セッションに関する多くの記事を読んだ後、randomQuestion が設定されているかどうかを確認することを考えました。設定されている場合、新しい質問は生成されません。

質問に回答すると、ランダムな質問の設定が解除され、システムが新しい質問を生成できるようになります。

しかし、私はそれを正しくしなかったので、それは本当にうまくいきませんでした.

私は何を間違えましたか?そして、これを行う最も簡単な方法は何ですか?

ありがとう!

4

2 に答える 2

1

私はセッションを使用することから始めません。もちろん、私はそれらを使用することになるかもしれませんが、概念実証のためには、最初に簡単な方法で行うのが最善です.

実際に行う必要があるのは、質問番号を示す非表示の値をフォームに挿入することだけです。

例(テストされていません):

<?php

$questions = array(
    array('What is Google?', 'god'),
    array('What is God?', 'gode'),
    array('Why is god?', 'godee')
);


$rnd=mt_rand(0,count($questions)-1);
$question=$questions[$rnd];

echo($question[0]);

?>

<form action="index.php" method="post">
<input type="hidden" name="q" value="<?=$rnd?>">
<input type="text" name="answer">
<input type="submit" value="Answer it!">
</form>

質問と回答を検証するサーバー コードの残りの部分は、演習として残します。

于 2013-02-19T12:50:58.043 に答える
0

このトリビア ゲームを複数の人にプレイしてもらいたい場合 (そして、私はあなたもそうだと思います)、単純な < form > よりも何かを考え出す必要があります ... 1 人のユーザーが与える回答を保存して他のユーザーはそれらを見ることができます。

于 2013-02-19T12:56:54.897 に答える