1

配列を使用して質問を保存するクイズがあります。

$array=array(
        '1'=> array('1','What does everyone know when they see it?','quest1','Good     publicity','Bad punctuation', 'Good business writing', 'Bad spelling','../images/example03.jpg'),
        '2'=> array('2','What do people write instead of \'now\'?','quest2','Presently','At this moment in time', 'Currently', 'At the present time','../images/example03.jpg'),
);

次に、このループを使用して質問を表示します。

foreach($array as $quiz)
{
echo            
                '<div class="question">
                        <div class="questionList">
                            <h4>' . $quiz[0] . '. <strong>' . $quiz[1] .         '</strong></h4>
                                <ul>
                                    <li><input type="radio" name="' . $quiz[2] . '" value="1"> '. $quiz[3] . '</li>
                                    <li><input type="radio" name="' . $quiz[2] . '" value="2"> '. $quiz[4] . '</li>
                                    <li><input type="radio" name="' . $quiz[2] . '" value="3"> '. $quiz[5] . '</li>
                                    <li><input type="radio" name="' . $quiz[2] . '" value="4"> '. $quiz[6] . '</li>
                                </ul>
                        </div>
                    <img src="'. $quiz[7] . '" class="questionImg01" />
                    <div class="clr"></div>
                </div>
                ';
    }

}

誰かが最初にすべての質問に回答しない場合、各質問の値を MySQL に保存するか、回答がなかった場合は「0」を保存します。ユーザーが既に回答したラジオ ボタンを確認したいのですが、クイズの配列と MySQL の結果を組み合わせる方法がわかりません。

結果のテーブル構造は次のとおりです。

クイズID | ユーザー名 | クエスト1 | クエスト2 | クエスト3 | クエスト4 | クエスト5 | クエスト6 | クエスト7 | クエスト8 | クエスト9 | クエスト10 | 完了

quiz_id はそのクイズの参照番号で、complete はユーザーがすべての質問に回答したかどうかを記録するフラグです。次のような結果を取得しています。

$results = mysql_query("SELECT * FROM quiz_results_baseline WHERE username = ('$username')");

これら2つを組み合わせる方法はありますか?

また、このクエリに WHERE ステートメントを含めることができないという問題もあります。すべてのクイズ結果を 1 つのテーブルに格納し、quiz_id を使用して各ユーザーのクイズ結果を参照したいと考えています。

mysql_query("INSERT INTO quiz_results_baseline (quest1,quest2,quest3,quest4,quest5,quest6,quest7,quest8,quest9,quest10,username,quiz_id,complete) VALUES $queryData ON DUPLICATE KEY UPDATE quest1=VALUES(quest1),quest2=VALUES(quest2),quest3=VALUES(quest3),quest4=VALUES(quest4),quest5=VALUES(quest5),quest6=VALUES(quest6),quest7=VALUES(quest7),quest8=VALUES(quest8),quest9=VALUES(quest9),quest10=VALUES(quest10),complete=VALUES(complete)");

どんな助けでも大歓迎です!

4

1 に答える 1

0

半分完成したクイズの結果をクイズと一緒にレンダリングするには、次のコードを試してください。

$questions=array(
  '1'=> array('1','What does everyone know when they see it?','quest1','Good     publicity','Bad punctuation', 'Good business writing', 'Bad spelling','../images/example03.jpg'),
  '2'=> array('2','What do people write instead of \'now\'?','quest2','Presently','At this moment in time', 'Currently', 'At the present time','../images/example03.jpg'),
);

// do your query for the row of answers
// $answers = mysql_fetch_assoc(...);

// for testing
$answers = array(
 'quest1' => '1',
 'quest2' => '4');


for($i = 1; $i <= count($questions); $i++)
{
  $quiz = $questions[$i];
  $answer = $answers[$quiz[2]];

  echo            
    '<div class="question">
        <div class="questionList">
          <h4>' . $quiz[0] . '. <strong>' . $quiz[1] . '</strong></h4>
          <ul>
            <li><input type="radio" name="' . $quiz[2] . '" value="1" ' . (($answer == '1') ? 'checked' : '') . '> '. $quiz[3] . '</li>
            <li><input type="radio" name="' . $quiz[2] . '" value="2" ' . (($answer == '2') ? 'checked' : '') . '> '. $quiz[4] . '</li>
            <li><input type="radio" name="' . $quiz[2] . '" value="3" ' . (($answer == '3') ? 'checked' : '') . '> '. $quiz[5] . '</li>
            <li><input type="radio" name="' . $quiz[2] . '" value="4" ' . (($answer == '4') ? 'checked' : '') . '> '. $quiz[6] . '</li>
          </ul>
        </div>
      <img src="'. $quiz[7] . '" class="questionImg01" />
      <div class="clr"></div>
    </div>
    ';
}

$answers配列を取得するにはクエリを実行する必要がありますが、結果の使用方法を確認できるように例を示します。

コードを実行すると、結果は次のようになります。

結果

お役に立てば幸いです。

于 2012-05-26T22:23:17.740 に答える