用PHP做多项选择题,数据库怎么设计, 代码怎么写....
视图页面是这样的.问题和答案是从数据库里面遍历出来的,我是这样设计的.总感觉这样设计错的..问题表:tbl_answer第二张表不知道怎么设计了....求大神详解.......
视图页面是这样的.
问题和答案是从数据库里面遍历出来的,
我是这样设计的.总感觉这样设计错的..
问题表:tbl_answer 第二张表不知道怎么设计了....
求大神详解....
处理页面不知道怎么写...question是正确答案. 展开
问题和答案是从数据库里面遍历出来的,
我是这样设计的.总感觉这样设计错的..
问题表:tbl_answer 第二张表不知道怎么设计了....
求大神详解....
处理页面不知道怎么写...question是正确答案. 展开
推荐于2017-12-15 · 知道合伙人软件行家
关注
展开全部
常规思路
表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个数组的交集,根据交集数量判断正确个数
不懂欢迎追问
更多追问追答
追问
额..如果我说是要做一个类似问卷调查的系统, 不需要对比答案,只需要把勾选的信息保存下来,数据库怎么设计, 代码怎么写.....
就是说一个用户当填完这些调查项点击确定后,我得把这些结果保存到一条数据里面,如何设计数据库,和代码,,,, 使得保存下来的问卷结果便于观察对比..
不好意思..麻烦了..
可以再加财富值的..
追答
如果是调查问卷的话,实际上也不建议存到一个字段里边
因为对于调查问卷收集过来的数据,大多都是要处理的,或统计,或加权,你如果放到一个字段里的话,那处理起来是会相当麻烦的
是我的话,做法应是这样
答案表
answer
id(主键)qid(对应问题)text(备选答案)
问卷结构保存表
mySelect
id(主键)aid(对应答案表的主键)uid(用户表对应主键)selected(用户选择的答案)
保存结果时,这样存,以后你在取数据的时候就相当方便
取某一用户的所有答案
SELECT * FROM mySelect WHERE uid='用户id'
取某一问题所有用户的答案
SELECT * FROM mySelect WHERE aid='答案id'
取某一用户某一题的答案
SELECT * FROM mySelect WHERE aid='答案id' AND uid='用户id'
取某一用户对于某一问卷的所有答案
SELECT A.* FROM answer A,question B WHERE A.qid=B.id AND B.id='问题id' AND A.uid='用户id'
展开全部
数据库的设计本人认为可以这样,提交表单应该再设置一个隐藏域,储存题目ID,例如
<input type="hidden" value="<?php echo $row['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我!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-04 · 知道合伙人软件行家
关注
展开全部
答案表至少需要3个字段,一个type(用来表明a.b.c.d)一个summary (用来文字描述答案)还有一个fid(用来指向问题的Id)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我先提供一下我自己的思路,不使用这么多字段,只需要几个即可,如下:
id answer questions question
1 四大... 火_指_造_印 火_指_造_印
2 运动 中_篮_排_棒 排_棒
...
然后,在读取问题的时候,将预设答案以下划线分隔开,得预设答案。
而用户选择答案提交后,将用户提交的答案以下划线合并,再与数据库的正确答案比较。
不知这样如何?
id answer questions question
1 四大... 火_指_造_印 火_指_造_印
2 运动 中_篮_排_棒 排_棒
...
然后,在读取问题的时候,将预设答案以下划线分隔开,得预设答案。
而用户选择答案提交后,将用户提交的答案以下划线合并,再与数据库的正确答案比较。
不知这样如何?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询