クイズ全体でどのように回答を追跡しますか? セッションを使用して、セッションが提供する各回答を質問 ID とともに保存します。「完了」をクリックして DB テーブルに保存するまで、ポイントを与えないでください
。セッションから与えられたポイント。現在の質問 ID; ユーザーID
次に、ユーザーが質問に行くと、次のようにデータベースをチェックします (大まかに):
SELECT
TotalPoints
FROM
tblQuestionsAnswered
WHERE
UserID = $UserId AND
QuestionID = $ThisQuestionId
何も返されない場合、彼らはこの質問から何のポイントも得ていません。
200 個のテーブルは必要ありません。行ごとに 1 つのテーブルが格納されます:
questionID、userID、totalpoints、その他の何か
ログオフしたとき、サイトを離れたとき、後で戻ってきたときなど、後で記録を保存できるようにしたい場合は、これ以上の方法はあり
ません (ファイルの使用は考えないでください。面倒です)。このシナリオの場合)
また、質問 A のセッションが開かれている場合、質問 B に進む場合、他のセッションを破棄し、質問 A を最初からやり直さなければならない場合など、他のことも考慮する必要があります。あるクイズを始めて別のクイズに行き、後でそのクイズに戻りたいと思う人がいるでしょうか。
これを実行できるようにしたい場合は、進行状況も DB テーブルに保存するのが最適です。おそらく、ポイントを格納するテーブル (上記の例では tblQuestionsAnswered) を使用して、「IsComplete」のような追加の列を作成できます。
これが「はい」に設定されている場合、この完了した質問に対してすでに持っているポイントが表示されます。「いいえ」の場合、新しい質問から始めて質問に取り組みます。「partdone」に設定されている場合、スクリプトは別のテーブルを照会します (例: tblQuestionProgress)、進行状況をそのテーブルからセッションにドラッグし、そのテーブルから進行状況を削除し、他のテーブルを IsComplete = no に設定すると、オフになります。