从数据库动态填充测验表单(PHP / MySQL)

时间:2013-09-05 07:43:58

标签: php mysql forms dynamic-programming

我正在尝试制作一个测验程序,该程序将从MySQL数据库中提取问题及其选择,并将其显示为用户填写的表单。用户(填写所有字段后)将提交。这里没有评分,答案只是存储在具有该用户注册ID的数据库中(这是因为一些答案是开放的,即:用户必须在物理上输入答案,因此稍后将对此进行评估。)

我的表的结构是(我将发布创建查询,因为表看起来扭曲且难以阅读):

表1:其中包含 q_id (每个问题都有唯一的ID),问题(实际问题), quiz_id (此问题所属的测验的ID;有多个测验!),活动(一个简单的“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),选项(这是实际的答案选择), 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的所有问题,然后回答每个问题,并检索属于的所有答案那个问题_id。然后必须以php形式显示这些内容。

非常感谢任何正确方向的指针!

(我目前正在阅读不同的方法,可以做到这一点,作为php的新手,所以我将添加我工作的任何其他代码,这个问题!)

2 个答案:

答案 0 :(得分:0)

阅读JOINS in MySQL,这样您就可以一次性获得问题和答案:

SELECT * FROM insr_questions q 
LEFT JOIN insr_answers a ON q.q_id = a.question_id 
WHERE q.active = 1 AND q.quiz_id = 0

然后使用mysql_fetch_array循环遍历结果。 (注意我使用了表别名q和a,这减少了输入并用于quiz_id任意数字)

答案 1 :(得分: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