1

この投稿のタイトルはかなり自明です。PHP でコーディングされたクイズ システムがあり、ユーザーが質問に答えるためにログインしているとします。ユーザーがクイズに正しく答えた後、ユーザーのターンを終了するにはどうすればよいでしょうか?

次のフローチャートを検討してください。

クイズの質問のフローチャート

ユーザーが質問に正しく答えた後、そのレベルを完全に閉じてユーザーが再度答える必要がないようにする PHP 関数をコーディングしたいと思います。

これを回避する方法または回避策があるかどうか疑問に思っていました。データベースを使用して、ユーザーが質問に既に回答しているかどうかを調べることは、私のアイデアのリストに既にありました。しかし、誰かがもっと良いものを思いつくことを望んでいました。私はそれを明確にしたことを願っています。

4

1 に答える 1

2

クイズ全体でどのように回答を追跡しますか? セッションを使用して、セッションが提供する各回答を質問 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 に設定すると、オフになります。

于 2013-09-08T22:01:39.037 に答える