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>



原创粉丝点击