0

MySQL データベースから質問とその選択肢を取得し、ユーザーが入力するフォームとして表示するクイズ プログラムを作成しようとしています。ユーザーは(すべてのフィールドに入力すると)送信します。ここでは採点は行われず、回答はそのユーザーの登録 ID とともにデータベースに保存されるだけです (これは、一部の回答が公開されているためです。つまり、ユーザーは物理的に回答を入力する必要があるため、後で評価されます)。

私のテーブルの構造は次のとおりです(テーブルが歪んでいて読みにくいので、作成クエリを投稿します):

表 1 : これには、q_id (各質問には一意の ID があります)、question (実際の質問)、quiz_id (この質問が属するクイズの ID; 複数のクイズがあります!)、active (単純な「y」または、この質問がアクティブかどうかを確認する "n" フィールド。アクティブでない場合、質問はフォームに追加されません) を入力し、 (単一選択の場合は 'c'、複数選択の場合は 'm'、オープンの場合は 'o' を入力します。 /ユーザーテキスト入力)

CREATE  TABLE `db_test`.`insr_questions` (
  `q_id` INT(10) NOT NULL AUTO_INCREMENT ,
  `question` VARCHAR(255) NOT NULL ,
  `quiz_id` MEDIUMINT(8) UNSIGNED NOT NULL ,
  `active` CHAR(1) NOT NULL ,
  `type` CHAR(1) NOT NULL ,
  PRIMARY KEY (`id`) );

表 2: これには、フィールドa_id (回答の選択肢の一意の ID)、choice (実際の回答の選択肢)、question_id (これらの回答の選択肢が属する質問 ID)、およびアクティブ(どちらが同上)

 CREATE  TABLE `db_test`.`insr_answers` (
  `a_id` INT(10) NOT NULL AUTO_INCREMENT ,
  `choice` VARCHAR(75) NOT NULL ,
  `question_id` MEDIUMINT(8) UNSIGNED NOT NULL ,
  `active` CHAR(1) NOT NULL ,
  PRIMARY KEY (`id`) );

したがって、ここでの考え方は、quiz_idを取得してから、質問テーブルを掘り下げて、その quiz_id に属するすべての質問を取得し、各質問を取得して、その question_id に属するすべての回答を取得することです。これらは、php フォームで表示する必要があります。

正しい方向へのポインタは大歓迎です!

(私は現在、これを行うことができるさまざまな方法を読んでいます.phpの初心者なので、私が取り組んでいる他のコードをこの質問に追加します!)

4

2 に答える 2

0

次のアルゴリズムで問題を解決しました:

Begin Loop (i from 0 to count(questions) )
  Create TextArea
  Textarea.Value = Question[i]
  Get count(answers) for Question[i]
  Get Type of Answer
  Case(c)
    Begin Loop (n from 0 to count(answers) )
      Create Radio Button[n]
      Radiobutton[n].Value = Choice[n]
    End Loop
  Case(m)
    Begin Loop (n from 0 to count(answers) )
      Create Checkbox[n]
      Checkbox[n].Value = Choice[n]
    End Loop
  Case(o)
    Create TextArea
  End Case
End Loop   
于 2013-09-06T14:13:19.133 に答える