PHP做在线答题遇到的困难 题库共有500道题,每次刷新都随机抽取20道作为试题,答案有A,B,C,D,E,如何获取用户选择的答案并与正确答案对比并记录答对的题号 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 radio box:quistion[qid][A]quistion[qid][B]....post即可。题目表中加一字段,保存该题的正确选项。只是对比正确的题目,一个查询就OK。 <?php if(!empty($answerList)){ $i=1; foreach($answerList as $buf){ ?> <tr> <td width="60" height="25" align="center"><b>第<?php echo $i?>题:</b></td> <td align="left"><?php echo $buf['questions']; ?></td> <td align="left"></td> </tr> <tr> <td width="60" height="25" align="center"></td> <td align="left"><?php if(!empty($buf['hda'])) echo "A".":".$buf['hda'].";"; if(!empty($buf['hdb'])) echo "B".":".$buf['hdb'].";"; if(!empty($buf['hdc'])) echo "C".":".$buf['hdc'].";"; if(!empty($buf['hdd'])) echo "D".":".$buf['hdd'].";"; if(!empty($buf['hde'])) echo "E".":".$buf['hde'].";";?> </td> </tr> <tr> <td width="60" height="25" align="center"></td> <td align="left"><input type='radio' name='".$array[id]."' value="A">A <input type='radio' name='".$array[id]."' value="B">B <input type='radio' name='".$array[id]."' value="C">C <input type='radio' name='".$array[id]."' value="D">D </td> </tr> <?php $i++; } } ?>问题:假设第一题我选A,做第二题时选B,第一题的A就取消了 其实这个问题,如果你变通一下应该很简单的,两种方案方案一:与数据库的数据进行对比。又分两种情况:情况一:每页只有一题的,每做一道题就与数据库中的数据进行对比下,将正确或错误的结果记录中SESSION中,当然你也可以记录其他有关的东西,如他选择了什么,这道题的ID等!情况二:所有的题全部在一页,采用一楼所说的方法进行操作!方案二: 将正确答案加密后(你可以两次或三次或更多次md5()加密,只要你喜欢)放入页面的隐藏域中,每一试题对应一个隐藏域,再将用户的选择答案加密后与隐藏域中的答案进行对比!本方案不管一页有一道或多道题,都可行!而且在用户提交后不用进行数据库查询!个人推荐方案二! if(!empty($answerList)){$i=1;foreach($answerList as $buf){ $_SESSION['answer'][$i]=$buf['id'];echo $buf['id'];echo "-";echo $_SESSION['answer'][$i];$i++;}}打印结果107-1418-491-9...怎么只保存了第一个字符 Fatal error: Allowed memory size of 8388608 bytes exhausted 想知道怎样得到想要的循环效果。用Smarty 求PHP查询两个表的方法! 求高手:http500问题,有关apache和php mysql数据库保存为utf-8,页面输入简体字或繁体字,怎么能同时搜索到简繁体呢? php解析xml得问题 请教一个关于接收POST数据的问题,急,在线等,高分求指点 IIS+PHP经常提示错误,该如何解决 大家看看为什么我的分页不行呢? 怎么把本地运行的php连接到远端呢? 【求教】我的注册新用户代码有些问题 怎样读取其它网站文件夹下的文件
quistion[qid][A]
quistion[qid][B]
....
post即可。
题目表中加一字段,保存该题的正确选项。
只是对比正确的题目,一个查询就OK。
if(!empty($answerList)){
$i=1;
foreach($answerList as $buf){
?>
<tr>
<td width="60" height="25" align="center"><b>第<?php echo $i?>题:</b></td>
<td align="left"><?php echo $buf['questions']; ?></td>
<td align="left"></td>
</tr>
<tr>
<td width="60" height="25" align="center"></td>
<td align="left"><?php
if(!empty($buf['hda'])) echo "A".":".$buf['hda'].";";
if(!empty($buf['hdb'])) echo "B".":".$buf['hdb'].";";
if(!empty($buf['hdc'])) echo "C".":".$buf['hdc'].";";
if(!empty($buf['hdd'])) echo "D".":".$buf['hdd'].";";
if(!empty($buf['hde'])) echo "E".":".$buf['hde'].";";?>
</td>
</tr>
<tr>
<td width="60" height="25" align="center"></td>
<td align="left"><input type='radio' name='".$array[id]."' value="A">A
<input type='radio' name='".$array[id]."' value="B">B
<input type='radio' name='".$array[id]."' value="C">C
<input type='radio' name='".$array[id]."' value="D">D </td>
</tr>
<?php
$i++; }
}
?>问题:假设第一题我选A,做第二题时选B,第一题的A就取消了
方案二: 将正确答案加密后(你可以两次或三次或更多次md5()加密,只要你喜欢)放入页面的隐藏域中,每一试题对应一个隐藏域,再将用户的选择答案加密后与隐藏域中的答案进行对比!本方案不管一页有一道或多道题,都可行!而且在用户提交后不用进行数据库查询!
个人推荐方案二!
$i=1;
foreach($answerList as $buf){
$_SESSION['answer'][$i]=$buf['id'];
echo $buf['id'];
echo "-";
echo $_SESSION['answer'][$i];
$i++;
}
}
打印结果
107-1
418-4
91-9
...怎么只保存了第一个字符