2019.5.21

缺少tp核心框架文件和static样式文件

thinkphp

链接:https://pan.baidu.com/s/1v2tFcZ5ha5uqrHl_sIsg3w
提取码:42mx

public/static

链接:https://pan.baidu.com/s/1aS4E660eHZH92H_kpR8aXA
提取码:m7tt

最近学校要求应五四青年节做一个微信端的线上答题,苦逼学生党在网上没找到合适的源码,又没钱买微擎的模块,只能琢磨着自己做一个。。首先前端选择用weui,后台选择tp5开发,数据库mysql。。。开发过程中也遇到了些问题,所以记录下来,源码在文章最后

先上效果图

数据库设计

tk表:题库

导入数据

user表:用户

插入测试的数据

问题一:实现随机答题功能

思路一:

比如答20道题,先从数据库随机抽取20道题,用tp5的{volist}标签一次性循环出来,并给每道题目加上style="display:none",先隐藏起来,每道题目分配一个id,id是循环出来的键值k,写个if条件 if k=1 说明是第一题,用jquery去掉display:none。。这样可以实现点击答案后显示下一题。

如何判断用户选择的答案是否正确? 我们循环tk表中的trueoption字段,在答题的html 放一个input标签,value值为循坏出来的正确答案,type设为hidden,由于是在微信端,我选择了直接用在js判断答案是否正确。等用户答完全部的题目再将结果传到控制器中处理。

<!DOCTYPE html>
<html><head><title>答题</title><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><link rel="stylesheet" href="__CSS__/weui.css">
<link rel="stylesheet" href="__CSS__/jquery-weui.css">
<link rel="stylesheet" href="__CSS__/demos.css">
<style>
#userimg img{border-radius:55px}.b1{width:90%;height:480px;margin: auto;position: absolute;top: 0;left: 0;right: 0;bottom: 0;} .title{text-align: center;padding-top: 25px;padding-bottom: 20px;font-size: 20px;font-weight: bold;
}
.ms{margin-top: 35px;
}
.weui_btn_plain_primary {color: #04be02;border: 1px solid #04be02;
}
.btnq{margin-top: 5%;height:300px;
}
.true{background-color:#90EE90;
}
.false{background-color:#FA8072;
}
body{background-image:url("__STATIC__/img/tbg.jpg");background-repeat:no-repeat;background-size:100% 100%;-moz-background-size:100% 100%;
}</style>
<script type="text/javascript">// 对浏览器的UserAgent进行正则匹配,不含有微信独有标识的则为其他浏览器var useragent = navigator.userAgent;if (useragent.match(/MicroMessenger/i) != 'MicroMessenger') {//这里警告框会阻塞当前页面继续加载alert('已禁止本次访问:您必须在微信内访问本页面!');//以下代码是用javascript强行关闭当前页面var opened = window.open('about:blank', '_self');opened.opener = null;opened.close();}</script></head><body ontouchstart>{volist name="res" id="vo" key="k" }{if condition="$k eq '1'"}<div class="b1"id="t{$k}">{else /}<div class="b1" style="display:none;"  id="t{$k}">{/if}<div class="weui-panel weui-panel_access" style="background-color:#000000;background-color:rgba(0,0,0,0.2);border-left:1px solid #E5E5E5;border-right:1px solid #E5E5E5;"><div class="weui-panel__hd">单选题 <span style="float:right">当前第{$k}题/共{$num}题</span></div><hr><div class="weui-panel__bd" style="margin-top:3%" ><input type="hidden" id="openid" value="{$openid}"><input type="hidden" id="a{$k}" value="{$vo.trueoption}">   <!-- 正确答案 --><div class="weui-media-box__bd" style="margin-bottom:3%"><h4 class="weui-media-box__title" style="margin-left:3%;font-size:16px;color:#fff">{$k}.{$vo.title}</h4></div></div></div><div class="btnq">{if condition="$vo.optiona neq ''"}<a id="A" class="weui-btn weui_btn_plain_primary" style="width:90%;font-size:14px;text-align:left" href="javascript:void(0)">{$vo.optiona}</a>{/if}{if condition="$vo.optionb neq ''"}<a id="B" class="weui-btn weui_btn_plain_primary" style="width:90%;font-size:14px;text-align:left" href="javascript:void(0)">{$vo.optionb}</a>{/if}{if condition="$vo.optionc neq ''"}<a id="C" class="weui-btn weui_btn_plain_primary" style="width:90%;font-size:14px;text-align:left" href="javascript:void(0)">{$vo.optionc}</a>{/if}{if condition="$vo.optiond neq ''"}<a id="D" class="weui-btn weui_btn_plain_primary" style="width:90%;font-size:14px;text-align:left" href="javascript:void(0)">{$vo.optiond}</a>{/if}</div></div>{/volist}<script src="__JS__/jquery-2.1.4.js"></script>
<script src="__JS__/fastclick.js"></script>
<script>$(function() {FastClick.attach(document.body);var j=1;var k=0;var a = new Array();  //用户判断第几题for(var i=0;i<20;i++){a[i]=i+1;}var score=0;  //分数var ts=0;     //题数// console.log(openid);$("a").click(function (e){ var id=e.target.id;  var as=$("#a"+a[k]).val();   //正确答案的值if(id==as){$(this).addClass("true");    //添加绿色css效果 表示答对score=score+5;ts++;}else{$(this).addClass("false");}$(this).parents("div").delay(50).hide(0); //延迟隐藏,避免css效果显示不处理var next='t'+a[j];$("#"+next).delay(60).show(0);j++;k++;//console.log(k);if($.inArray(k+1, a)==-1)     //判断是否回答完毕{var openid=$("#openid").val();//alert("你的得分是"+score);window.location.href='http://这里改为你的域名.cn/dt/public/index/zf/index/?ts='+ts+'&score='+score+'&openid='+openid; return;}});
});</script><script src="__JS__/jquery-weui.js"></script></body>
</html>

思路二:

用ajax将答案传到控制器判断是否是正确答案,并随机抽取下一题渲染到模板,循坏这个过程。由于当时时间有点急,我并没有选择这种方案,有兴趣的老铁可以试试

问题二:答题样式重叠

这个问题是在上线后才发现的,是因为用户手速过快,hide延迟函数没来得及执行完就显示下一题(顺便吐槽一句,法克,点这么快是要去投胎吗)大概是这样的

这个只要将延迟函数的数值调小一点就可以了

$(this).parents("div").delay(50).hide(0); //调成合适的数值

问题三:最后一题显示不出来

这个问题也是上线后才发现的,(当初找bug找得心态都爆炸了)抽取了20题,用户反映答到19题,第二十题显示不出来

这个问题是因为数据库的tk表题库的id不连续造成的,当初我是随便上网找了个算法来实现随机取数据库题,算法本身没什么毛病,至于怎么找到这个bug的,就从算法所在的控制器中找,结果取出来之后,直接print_r($xxx);die; 再看下数据库就能发现了

就是少了个id为5的题目,只要将题库最后一题的id改为5就行了

使用方法

我的公众号是授权了腾讯微校,所以在腾讯微校的拓展里添加扩展功能就行了

更改database.php 改为自己的数据库和密码

application/index/index.php

reg.php

修改为自己域名地址

最后附上源码

https://gitee.com/gdhsxuan/dt

基于thinkphp5开发的微信线上答题相关推荐

  1. 开学季,关于校园防诈骗宣传,如何组织一场微信线上答题考试

    开学季,关于校园防诈骗宣传,如何组织一场微信线上答题考试 如何组织一场微信线上答题考试 在线考试是一种非常节约成本的考试方式,考生通过微信扫码即可参加培训考试,不受时间.空间的限制,近几年越来越受企事 ...

  2. 微信小程序从本地开发环境到线上测试环境和生产环境的配置

    这篇文章是对慕课网mpvue实战项目视频过程中环境的配置的总结与更新(因为小程序文档时不时就更新) 项目源码:https://github.com/suhuashan/bookCommentSyste ...

  3. 基于 Vue 的学生社团线上管理平台开发与设计

    0 引言 近年来, 各高校为丰富学生的校园生活. 培养学生的个性, 社团与社团人数增加迅速, 需要处理的各类信息也层出不穷, 传统的管理方式已经不利于快捷地处理这些问题. 因此管理不便. 信息错综复杂 ...

  4. vue.js反编译_基于electron-vue开发的微信小程序反编译客户端

    开源一个小程序反编译客户端 咨询小程序反编译的同学比较多,虽然有开源库但是还是有同学不清楚如何去操作,所以索性做了一个客户端方便进行小程序的反编译 # 技术选型 网上已经有大佬实现了C#版的反编译工具 ...

  5. 基于云开发的微信小程序:个人相册ByUestcXiye

    基于云开发的微信小程序:个人相册ByUestcXiye 作业要求 第一次作业 第二次作业 结课作业 小程序开发入门 开发前的准备 注册微信小程序 新建一个模板小程序 开通云开发服务 第一次作业 参考资 ...

  6. 【java毕业设计】基于Spring Boot+mysql的线上教学平台系统设计与实现(程序源码)-线上教学平台

    基于Spring Boot+mysql的线上教学平台系统设计与实现(程序源码+毕业论文) 大家好,今天给大家介绍基于Spring Boot+mysql的线上教学平台系统设计与实现,本论文只截取部分文章 ...

  7. 基于云开发的微信小程序实战教程(二)

    基于云开发的微信小程序实战教程(二) 上篇文章中,简单介绍了下小程序云开发的概念,还有开发工具的安装和配置,云开发环境已经搭建完毕. 本章主要内容:微信开发者工具如何使用,小程序云开发的基础目录结构 ...

  8. php答题测试,ThinkPHP框架开发的微信考试问卷答题系统_学生在线考试答题系统

    源码介绍 ThinkPHP框架开发的微信考试问卷答题系统,通过微信公众平台进行问卷答题,适合用来做问卷调查,也可以用来做学生考试答题系统,还有完善的问卷后台管理系统,可自定义上传问卷,支持成绩表查询. ...

  9. 消防知识线上答题活动小程序复盘

    前言 11月9日是全国消防日,今年的消防活动主题为"关注消防,生命至上". 中国的消防安全日为11月9日.世界各国的火警号码都不一样,每个国家都选取了让人们最容易记住的数字来组成火 ...

最新文章

  1. 如何通过一行代码下载B站视频?
  2. 图灵2011年6月书讯【误区】【软件调试修炼之道】即将上市
  3. MVC之前的那点事儿系列(2):HttpRuntime详解分析(上)
  4. datagridview当传递具有已修改行的 DataRow 集合时,更新要求有效的 UpdateCommand。
  5. 《剑指offer》c++版本 12. 矩阵中的路径
  6. python数据分析第七章实训3_《利用Python进行数据分析·第2版》第7章 数据清洗和准备7.1 处理缺失数据7.2 数据转换7.3 字符串操作7.4 总结...
  7. LinuxUSB驱动程序调试--009:编写应用程序---验证协议【转】
  8. 组策略系列之四:《精典放送:组策略管理20点》
  9. leetcode lcp2 分式化简
  10. Linux 查看命令
  11. 【ZJCPC2019 第16届 浙江省赛】The 16th Zhejiang Provincial Collegiate Programming Contest(GFHIJ 5题)
  12. Js 中null 和underfined的区别
  13. 【Pygame小游戏】10年前风靡全球的手游《愤怒的小鸟》,是如何霸榜的?经典回归......
  14. oracle character set mismatch,EntityFramework查询oracle数据库时报ora-12704: character set mismatch...
  15. unity简单小球下落
  16. 杭州电子科技大学计算机科学与技术专业排名,杭州电子科技大学计算机科学与技术研究生专业排名...
  17. 基于和芯星通UM482的RTK差分定位
  18. protect 和 private 的区别
  19. OpenCV stitching_detailed.cpp 笔记
  20. 05-kubernetes Pod控制器应用进阶

热门文章

  1. emule编译 vs2005+win7+最新版本电驴
  2. 分子动力学模拟之基于自动微分的LINCS约束
  3. 华硕笔记本启动项全部丢失解决办法
  4. 【数据结构与算法】之深入解析“点菜展示表”的求解思路与算法示例
  5. PHPExcel插件工具
  6. Aliyun服务之物流信息查询
  7. AS引用本地aar文件
  8. 数学建模中扬帆起航问题求解
  9. 百度翻译API —— 通用文本翻译
  10. 手把手制作太阳系运行模型,纹理贴图、模型变换、动画、计算机图形学(OpenGL、C++实现、超级详细)