最近在做一個關于學習的網(wǎng)站富雅,有一個作業(yè) 測試的功能焕襟, 想記錄一下:
用的 thinkphp3.2
這是界面
QQ截圖20170929114111.png
控制器:
//測試
public function ztest(){
//課時id
$id = I("hour_id");
$field = "test";
$uid = $_SESSION['user_id'];
$page = 0;
$section = M('course_section')->field($field.',sc_name')->where("id = '$id'")->find();
$arr = explode(',', $section[$field]);
$count = count($arr);
foreach($arr as $k => $v){
$ti = M('exam_shiti')->where("id = '$v'")->find();
$old = M('course_test')->where("uid = '$uid' and tid = '$v' and type = '2'")->find();
if($old){
$ti['old'] = 1;
$ti['old_val'] = $old['val'];
if($ti['typeid'] < 4){
if($ti['daan'] == $old['val']){
$yesstr .= "1".',';
$ti['jie'] = '<span style="color:green;">正確</span>陨收。'.htmlspecialchars_decode($ti['analysis']);
}else{
$yesstr .= "0".',';
$ti['jie'] = '<span style="color:red;">錯誤</span>。正確答案:'.$ti['daan'].htmlspecialchars_decode($ti['analysis']);
}
}else{
$yesstr .= "1".',';
$ti['jie'] = '<span style="color:green;">正確</span>鸵赖。'.htmlspecialchars_decode($ti['analysis']);
}
}else{
$ti['old'] = 2;
}
if($k == $count-1){
$ti['ready'] = 1;
}
$tiarr[] = $ti;
}
if(substr($yesstr, -1) == ','){
$yesstr = substr($yesstr, 0,-1);
}
if(isset($_POST['page'])){ // 類似于上一頁下一頁 ajax下一題上一題處理地點
if($_POST['page'] > count($tiarr)){
echo 'no';die;
}
$page = $_POST['page']-1;
}
if(isset($_POST['val'])){ // 判斷正確與否 ajax提交處理地點
$val = $_POST['val'];
$tid = $_POST['id'];
$dati = M('exam_shiti')->field('daan,analysis')->where("id = '$tid'")->find();
if($_POST['xing'] < 4){
if($dati['daan'] == $val){
$res['da'] = '正確';
}else{
$res['da'] = '錯誤';
}
}else{
$res['da'] = '正確';
}
$res['txt'] = '正確答案:'.$dati['daan'].htmlspecialchars_decode($dati['analysis']);
echo json_encode($res);die;
}
//查詢是否已收藏
$ttid = $tiarr[$page]['id'];
$uid = $_SESSION['user_id'];
$coll = M('exam_collect')->where("exam_id = '$ttid' and uid = '$uid' and type = '1'")->find();
$this->assign('yesstr',$yesstr);
$this->assign('coll',$coll);
$this->assign('hour_id',$id);
$this->assign('section',$section);
$this->assign('page',$page+1);
$this->assign('ti',$tiarr[$page]); //以數(shù)組下標做分頁顯示
$this->assign('webname','我的課程');
$this->display();
}
//儲存答案
public function subti(){
$val = I('val');
$id = I('id');
$sid = I('sid');
$type = I('type');
$uid = $_SESSION['user_id'];
$data['val'] = $val;
$data['tid'] = $id;
$data['uid'] = $uid;
$data['sid'] = $sid;
$data['type'] = $type;
$add = M('course_test')->add($data);
}
//刪除答案
public function delti(){
$id = I('id');
$uid = $_SESSION['user_id'];
$del = M('course_test')->where("uid = '$uid' and sid = '$id' and type = '2'")->delete();
}
首先是提交功能务漩,分辨題型符匾,去數(shù)據(jù)庫比對對錯咐蚯,返回答案,顯示:
注远剩,客戶要求列赎,問答題和材料題直接返回正確
//作業(yè)提交答案
//xing 題型 1選擇 2填空 3判斷 4 問答 5材料題
// e 點擊對象宏悦,id 題ID,path ajax地址(判斷正確與否)包吝,cunpath ajax地址(保存答案)饼煞,sid 課時ID
//Fraction 有是測試 測試需要返回分數(shù),且可以重復做題 诗越、無是作業(yè)砖瞧, 只能做一次,不需要打分
function subti(e,id,xing,path,cunpath,sid,Fraction){
var val,type;
if(xing == 1){//選擇題
val = $("input[name='daan']:checked").val();
}else if(xing == 2){//填空題
val = $("input[name='daan']").val();
}else if(xing == 3){//判斷題
val = $("input[name='daan']:checked").val();
}else if(xing == 4 || xing == 5){
val = $("textarea[name='daan']").val();
}
if(Fraction){
type = 2;
}else{
type = 1;
}
$.post(cunpath,{id:id,val:val,type:type,sid:sid},function(data){ //保存答案到數(shù)據(jù)庫
console.log(data);
})
$.post(path,{val:val,id:id,xing:xing},function(data){ //判斷返回內(nèi)容
var res = JSON.parse(data);
if(res.da == '正確'){
if(Fraction){
var f = $("#Fraction").val();
if(f != ''){ //頁面儲存正確與否嚷狞,打分用
$("#Fraction").val(f+','+'1');
}else{
$("#Fraction").val('1');
}
}
var html = "<span style='color:green;'>"+res.da+"</span>";
}else{
if(Fraction){
var f = $("#Fraction").val();
if(f != ''){ //頁面儲存正確與否块促,打分用
$("#Fraction").val(f+','+'0');
}else{
$("#Fraction").val('0');
}
}
var html = "<span style='color:red;'>"+res.da+"</span>";
}
html += "荣堰。"+res.txt;
$("#daancontent").html(html);
$("#daancontent").show();
$(e).hide();
$(e).next().show()
})
}
點擊提交后,顯示對錯竭翠,并且顯示正確答案與解析振坚。 提交按鈕變成下一題
image.png
點擊下一題
//作業(yè)測試上一題下一題
// e 本對象 , type 作業(yè)or測試 斋扰,id 課時ID 渡八,path ajax發(fā)送地址(上下題)
//endpath ajax發(fā)送地址(測試的話測試完成需要刪除答案記錄)
// Fraction 有就是測試 無就是作業(yè)
function nextti(e,type,page,id,path,endpath,Fraction){
if(type == 'next'){//下一題
page += 1;
}else if(type == 'prev'){
page = page-1;
}
$.post(path,{page:page,hour_id:id},function(data){
if(data == 'no'){ //返回no 沒有下一題了
if(Fraction){
var f = $("#Fraction").val();
var arr = f.split(",");
var j = 0;
for(var i=0;i<arr.length;i++){
if(arr[i] == 1){
j++;
}
}
// console.log(j);
var zf = Math.ceil((100/arr.length)*j);
layer.open({
title:'提示',
shadeClose: false, //點擊遮罩關閉
content: "最終得分"+ zf,
end: function(index, layero){
$.post(endpath,{id:id},function(){
href('/index.php?g=portal&m=MyCourse&a=mycourse');
})
}
});
}else{
layer.open({
title:'提示',
shadeClose: false, //點擊遮罩關閉
content: "作業(yè)做完啦",
end: function(index, layero){
href('/index.php?g=portal&m=MyCourse&a=mycourse');
}
});
}
}else{
var i = $("#aaaa",data);
$("#aaa").html(i);
}
})
// console.log(val);/
}
點擊下一題
image.png
image.png
image.png
image.png
大概就是個這, 能參考的參考一下吧~~
可能有點亂传货,不太容易看屎鳍,。问裕。逮壁。
反正我也就是記錄一下, 萬一以后用的著呢粮宛。~~~