PHP简单知识竞赛(在线答题)
来源:互联网 发布:js button 快捷键 编辑:程序博客网 时间:2024/04/27 22:13
需要用到两张表:paper和questions
CREATE TABLE `paper` ( `Id` int(11) NOT NULL auto_increment, `UserId` int(10) NOT NULL, `SingleChoice` varchar(150) default NULL, `MultipleChoice` varchar(150) default NULL, `TfChoice` varchar(150) default NULL, `Score` float(53,0) NOT NULL, `Answer` varchar(350) default NULL, `CreateDate` datetime NOT NULL, `Version` varchar(4) default NULL, PRIMARY KEY (`Id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE `questions` ( `Id` int(11) NOT NULL auto_increment, `IsApproved` varchar(1) NOT NULL, `CreateDate` datetime NOT NULL, `CreateUser` int(10) NOT NULL, `Title` varchar(200) default NULL, `Items` varchar(600) default NULL, `Result` char(10) default NULL, `EnterpristId` int(10) NOT NULL, `CreateUserName` varchar(50) default NULL, `Cate` int(10) NOT NULL, `IsCommittee` varchar(1) NOT NULL, `Version` varchar(4) default NULL, PRIMARY KEY (`Id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=51 ;
单选:A/B/C/D对应0、1、2、3
多选:A/B/C/D对应1、2、4、8 (多选每个选项的Value值准备使用2的几次方)然后求多个选项的和作为最后结果
判断:对、错对应1、0
public function paper(){ //权限判断 if($_SESSION[C('USER_AUTH_KEY')]['UserType']== 1 || $_SESSION[C('USER_AUTH_KEY')]['UserType']== 2){ }else{ exit('没有权限访问'); } $times = M('Paper')->where("UserId={$_SESSION[C('USER_AUTH_KEY')]['UserId']}")->select(); $num = count($times); if($num > 4){ exit('每人只能答题五次'); } //单选(30/1) $model = new Model(); $SingleChoice = $model->query("select Id,Title,Items from questions where Cate=1 and IsApproved=1 order by rand() limit 30"); foreach($SingleChoice as $k=>$v){ $itmes[] = explode('%##%',$v['Items']); } $this->assign('SingleChoice',$SingleChoice); $this->assign('itmes',$itmes); //多选(20/2) $model = new Model(); $MultipleChoice = $model->query("select Id,Title,Items from questions where Cate=2 and IsApproved=1 order by rand() limit 20"); foreach($MultipleChoice as $k=>$v){ $Mitmes[] = explode('%##%',$v['Items']); } $this->assign('MultipleChoice',$MultipleChoice); $this->assign('Mitmes',$Mitmes); //判断(30/1) $model = new Model(); $Judgments = $model->query("select Id,Title,Items from questions where Cate=3 and IsApproved=1 order by rand() limit 30"); $this->assign('Judgments',$Judgments); $this->display(Paper);}public function score(){ $paper=$this->_post(); //dump($paper); //得出单选题得分 for($k=1;$k<=30;$k++){ $SingleChoice[] = $paper['1'.$k];//单选题所做题目ID号组成的数组 $Sanswer[$k] = $paper['r1'.$k]; $answer = M('questions')->where("Id={$paper['1'.$k]} and Result={$paper['r1'.$k]}")->field('Id')->find(); if($answer){ $Sscore+=1; } } $SingleChoice = join(',',$SingleChoice);//把单选题ID号转成字符串存储 $Sanswer = join(',',$Sanswer); //得出多选题得分 for($k=1;$k<=20;$k++){ $MultipleChoice[] = $paper['2'.$k]; //$Manswer[] = $paper['r2'.$k]; $Manswer[$k] = array_sum($paper['r2'.$k]);//把ABCD答案转换成1/2/4/8相加最后组成的结果 $answer = M('questions')->where("Id={$paper['2'.$k]} and Result={$Manswer[$k]}")->field('Id')->find(); if($answer){ $Mscore+=2; } } $MultipleChoice = join(',',$MultipleChoice);//把多选题ID号转成字符串存储 $Manswer = join(',',$Manswer); //得出判断题得分 for($k=1;$k<=30;$k++){ $TFChoice[$k] = $paper['3'.$k]; $TFanswer[$k] = $paper['r3'.$k]; $answer = M('questions')->where("Id={$paper['3'.$k]} and Result={$TFanswer[$k]}")->field('Id')->find(); if($answer){ $TFscore+=1; } } $TFChoice = join(',',$TFChoice);//把多选题ID号转成字符串存储 $TFanswer = join(',',$TFanswer); $Score = $Sscore+$Mscore+$TFscore; $Answer = $Sanswer.','.$Manswer.','.$TFanswer; //dump($Answer); $paper = M('paper'); $data['UserId'] = $_SESSION[C('USER_AUTH_KEY')]['UserId']; $data['SingleChoice'] = $SingleChoice; $data['MultipleChoice'] = $MultipleChoice; $data['TfChoice'] = $TFChoice; $data['Score'] = $Score; $data['Answer'] = $Answer; $data['CreateDate'] = date('Y-m-d H:i:s',time()); $paper->add($data); $this->assign('Score',$Score); $this->display(score);}
单选:
<volist name="SingleChoice" id="SingleChoice" key="k"> <dl class="list3"> <dt>{$k}、{$SingleChoice.Title}<input type="hidden" name="1{$k}" value="{$SingleChoice.Id}" /></dt> <dd> <ul class="choice" border="0"> <table> <php>foreach($itmes[$k-1] as $key=> $v){</php> <tr> <td> <input id="1{$k}{$key}" type="radio" name="r1{$k}" value="{$key}" /> </td> <td> <li> <label for="1{$k}{$key}"><php>echo $v.'<br>';</php></label> </li> </td> </tr> <php>}</php> </table> </ul> </dd> </dl></volist>
多选:
<volist name="MultipleChoice" id="MultipleChoice" key="k"> <dl class="list3"> <dt>{$k}、{$MultipleChoice.Title}<input type="hidden" name="2{$k}" value="{$MultipleChoice.Id}" /></dt> <dd> <ul class="choice" border="0"> <table> <php>foreach($Mitmes[$k-1] as $key=> $v){</php> <tr> <td> <input id="2{$k}{$key}" type="checkbox" name="r2{$k}[{$key}]" value="{$key|pow=2,###}" /> </td> <td> <li> <label for="2{$k}{$key}"><php>echo $v.'<br>';</php></label> </li> </td> </tr> <php>}</php> </table> </ul> </dd> </dl></volist>
判断:
<volist name="Judgments" id="Judgments" key="k"> <dl class="list3"> <dt>{$k}、{$Judgments.Title}<input type="hidden" name="3{$k}" value="{$Judgments.Id}" /></dt> <dd> <ul class="choice" border="0"> <table> <tr> <td> <input id="3{$k}0" type="radio" name="r3{$k}" value="1" /> <label for="3{$k}0"> 对</label> </td> </tr> <tr> <td> <input id="3{$k}1" type="radio" name="r3{$k}" value="0" /> <label for="3{$k}1"> 错</label> </td> </tr> </table> </ul> </dd> </dl></volist>
- PHP简单知识竞赛(在线答题)
- php+mysql的在线答题
- 在线答题
- online judge汇总(在线答题)
- Python答题:LinteCode简单题库(一)
- 用ASP实现聊天室中的在线答题游戏(续)
- 基于JSP在线答题程序设计
- 在线答题打码平台
- 在线答题系统的设计
- 简单的答题网页
- 十八大知识竞赛(选择题)
- 简单的四则运算答题系统(Java版)
- PHP笔试之简答题
- 微信公众平台开发(38)一站到底在线答题
- 微信公众平台开发(38)一站到底在线答题
- 一段在线答题的javascript代码
- ACM在线答题(Judge Online)网站
- 在线选择题的答题及提交方式
- 简单存储过程和游标使用案例
- perl-小骆驼 总结(二)
- 回家建这样的房子,新农村超漂亮户型图
- 设计模式--单例模式,观察者模式,适配器模式
- hsqldb源码分析系列5 查询引擎之查询操作
- PHP简单知识竞赛(在线答题)
- 管理学&心理学&经济学的60个定理(二)
- java中JoptionPane类的使用
- The operate of stack
- 设置ECLIPSE 中光标移至代码上自动提示功能
- 杂记
- 激发程序员创意的6本书
- 向设计师推荐的书籍
- 国外程序员推荐:每个程序员都应读的书