用PHP做多项选择题,数据库怎么设计, 代码怎么写...

发布网友 发布时间:2022-04-24 13:00

我来回答

4个回答

懂视网 时间:2022-04-29 15:47

php选择题数据库如何设计

php选择题数据表可以设计如下:

E-R图

1.jpg

选择题数据表

列名

说明

数据类型

约束

ChoiceQst_id

试题号

tinyint

not null IDENTITY(1, 1) primary key

ChoiceQst_Question

题型号

int

not null

foreign key

ChoiceQst_Info

内容

text

not null

ChoiceQst_OP1

操作1

text

not null

ChoiceQst_OP2

操作2

text

not null

ChoiceQst_OP3

操作3

text

not null

ChoiceQst_OP4

操作4

text

not null

ChoiceQst_answ

答案

char

not null

更多PHP相关知识,请访问PHP中文网!

热心网友 时间:2022-04-29 12:55

常规思路
表1(问题)
question
id(主键) text(问题内容) rightAnswer(正确答案)
表2(备选答案)
answer
id(主键) qid(对应的问题id) text(备选答案)
$sql="SELECT * FROM question";
$r = mysql_query($sql);
while($row = mysql_fetch_rows($r)){
//输出题干
echo $row[1];
$subsql="SELECT * FROM answer WHERE qid = '".$row[0]."'";
$subr = mysql_query($subsql);
while($subrow = mysql_fetch_rows($subr)){
//输出备选答案
echo subrow[2];
}
}
我相信这是比较主流的设计思路,希望的帮到你
至于比对答案的时候,有一种简单做法,你传回来的答案不是数组吗,将数据库正确答案以字符串形式输出,打散成数组,求2个数组的交集,根据交集数量判断正确个数
不懂欢迎追问

热心网友 时间:2022-04-29 14:13

我先提供一下我自己的思路,不使用这么多字段,只需要几个即可,如下:
id
answer
questions
question
1
四大...
火_指_造_印
火_指_造_印
2
运动
中_篮_排_棒
排_棒
...
然后,在读取问题的时候,将预设答案以下划线分隔开,得预设答案。
而用户选择答案提交后,将用户提交的答案以下划线合并,再与数据库的正确答案比较。
不知这样如何?

热心网友 时间:2022-04-29 15:48

数据库的设计本人认为可以这样,提交表单应该再设置一个隐藏域,储存题目ID,例如
" name="an_id">
处理页面可以使用将获取到的答案数组
$_POST['itm']进行遍历,用循环$value查找question,可以使用函数strpos(),该函数如果返回数字,则是正确答案,如果返回false,则是错误答案
if(isset($_POST['an_id'])){
$an_id = $_POST['an_id'];
$qus_sql = "select `question` from `vote_answer` where id = $an_id";
$query = mysql_query($qus_sql);
while($row = mysql_fetch_row($query)){
$question = $row[0];
}
$user_question = $_POST['itm'];
foreach($user_question as $value){
if(strpos($question,$value){
echo '正确答案';
}else{
echo '错误答案';
}
}
}全手写代码,有错误请百度HI我!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com