我正在尝试制作一个测验程序,该程序将从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的新手,所以我将添加我工作的任何其他代码,这个问题!)
答案 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