最近实习做了一个PHP的项目练手,大概是一个答题管理的模板(已部署至www.songlei.online),用了TP5+Jquery+layui来实现,由于整个系统功能模块有点多,所以我们逐个拆分出来。这次先做问题模板的添加和删除。如下图。

模板.JPG

1.前期准备

TP5框架:在tp5的官网下载框架模板ThinkPHP5核心版

编辑器:我选用的是VS code。因为相较于其它IDE,更加轻量级,别的集成IDE亦可。

一点点的TP5知识储备:TP5完全开发手册

一点点的layui文档的bang助:layui开发使用文档

2.架构设计(MVC)

image.png

这里我选择单模块index模块 将所有控制器都放在Controller层

不同于TP5框架提供的index模块的view层,我将view层要渲染的html页面都放在了template目录下,并且与controller层一一对应,配置的代码,在application模块下的config.php中。

'template' => [

// 模板引擎类型 支持 php think 支持扩展

'type' => 'Think',

// 模板路径

'view_path' => '',

// 模板后缀

'view_suffix' => 'html',

// 模板文件名分隔符

'view_depr' => DS,

// 模板引擎普通标签开始标记

'tpl_begin' => '{',

// 模板引擎普通标签结束标记

'tpl_end' => '}',

// 标签库标签开始标记

'taglib_begin' => '{',

// 标签库标签结束标记

'taglib_end' => '}',

'view_base' => ROOT_PATH . 'template/',

],

在template关联数组末尾加一句view_base的关联

'view_base' => ROOT_PATH . 'template/',

3.数据库设计

image.png

t_gr_是表前缀,总共有四张表。

qsn_model表用来存储题目的模板数据

qsn用来存储每套模板下的题目数据

qsn_detail用来存储用来存储每个题目对应选型的数据

psg_qsn_r用来存储用户答题的数据

今天的主角是qsn_model表

image.png

image.png

四个字段,主键(model_id),模板名称(name),模板创建时间(time),创建人名称(create_name)。

4.View层实现(Jquery+layui)

首先是添加模板的View层实现。

image.png

引用了layui的按钮组样式 id为btn-add的按钮 即为添加模板按钮

image.png

点击添加模板 我们用Jquery设置其弹出了一个layui的弹出层 id为set-add-put

//弹出添加窗口

$('#btn-add').click(function() {

layer.open({

type: 1,

skin: 'layui-layer-rim', //加上边框

area: ['660px', '350px'], //宽高

content: $('#set-add-put'),

title: "添加模板"

});

});

如下

image.png

input框有三个,分别对应数据库的create_name,time,name。

创建人名字

创建时间

模板名称

立即添加

重置

然后,我们数据点击立即添加按钮,id为add。我们对其用Jquery进行ajax请求。

//添加数据

$('#add').click(function() {

var create_name = $('input[name="create_name"]').val(); //获取值

var name = $('input[name="name"]').val();

var time = $('input[name="time"]').val();

if (create_name !== '') {

//打开正在加载中弹出层

layer.msg('加载中', {

icon: 16,

shade: 0.01,

time: '9999999'

});

var url = "{:url('survey/add_qsn')}";

var data = {

create_name: create_name,

name: name,

time: time

}

$.post(url, data, function(data) { //使用ajax提交

layer.closeAll();

if (data.code == 1) { //这里的code对应返回的状态码

layer.msg(data.msg, {

icon: 6

});

location.reload();

} else {

layer.msg(data.msg, {

icon: 5

});

}

}, "json");

}

});

提交的data,就是我们输入框获取的三个值,create_name,name,time。

提交到Controller层,如果返回的数据状态码为代表成功的1,则刷新整个页面,否则,提示错误。

然后我们看看Controller层的代码。

5.Controller层实现

首先我在application目录下的common.php文件定义了一个公共方法,用来返回json格式数据给View层。

// 应用公共文件

function returnjson($arr_data){

$arr = array(

'code' => $arr_data['0'],

'msg' => $arr_data['1'],

'data' => $arr_data['2']

);

if(!isset($arr_data['2'])){

unset($arr['data']);

}

if(!isset($arr_data['1'])){

unset($arr['msg']);

}

echo json_encode($arr);exit;

}

返回的数据有三个,code状态码,msg信息,data返回的数据。

然后看survey.php下的add_qsn方法:

//新增

public function add_qsn()

{

$data['create_name'] = input('post.create_name'); //thinkPHP中的助手函数,我们用ajax提交的数据

$data['name'] = input('post.name');

$data['time'] = input('post.time');

$data['model_id'] = uniqid('model', true);//使用uniqid形成一个特定唯一的model_id

if (empty($data['create_name'])) {//查询创建人是否为空

returnjson([3, 'warning1', '']);

}

//查询model_id 是否重复 模板不存在的话 就能添加此条记录

$chk_model_id = db('qsn_model')->where('create_name', $data['create_name'])->find($data);

if (empty($chk_model_id)) {

//插入数据库

$insert = db('qsn_model')->insert($data);

if ($insert) {

returnjson([1, '添加成功', '']);

} else {

returnjson([2, '添加失败', '']);

}

} else {

returnjson([3, '该数据已存在', '']);

}

}

我这里用了TP5提供的助手函数,熟悉PHP的话,应该会知道

_POST,这里就是对应$_POST,TP5对这两个函数形成了助手函数,防止一些SQL注入等安全因素带来的隐患。

此外,还有一个封装的returnjson方法,对我们返回的状态码,数据,msg进行规范操作。

function returnjson($arr_data){

$arr = array(

'code' => $arr_data['0'],

'msg' => $arr_data['1'],

'data' => $arr_data['2']

);

if(!isset($arr_data['2'])){

unset($arr['data']);

}

if(!isset($arr_data['1'])){

unset($arr['msg']);

}

echo json_encode($arr);exit;

}

6.功能一览

然后我们查看下我们的功能实现了没

1.gif

可以看见,列表的模板已经从2个增加到3个了。

大功告成啦,如果喜欢就给颗小吧~

项目仅供测试学习使用,拒绝任何形式的商业用途,转侵删。

项目源码关注公众号Code In Java,回复"答题管理系统ThinkPHP版本"即可获取。除此之外,还有Java学习图谱,数据结构与算法资料等各种资料都可以在后台获取。

php商城系统文和答题_ThinkPHP5实现答题管理系统(一)相关推荐

  1. php商城系统文和答题_java商城系统好 还是PHP的商城系统好?

    Java 和 PHP 都是目前主流的开发语言,在市面上均有很成功的大型平台,如:taobao.jd 等用的 Java 开发,pdd.DBShop 电子商务网店系统用的 PHP 开发,所以可以说这两个开 ...

  2. php商城系统文和答题_基于PHP的网上商城系统分析与设计

    1 目录 目录 .............................................................. 1 摘 要 ....................... ...

  3. php商城系统文和答题_基于PHP的网上商城系统分析和设计

    专业知识分享 目录 目录 .............................................................. 1 摘 要 .................. ...

  4. 校园答题网站服务器,校园竞赛答题软件-公园答题软件

    原标题:校园竞赛答题软件-公园答题软件 "校园竞赛答题软件"二十一世纪以来利用互联网技术建设社会风采,同时能够利用校园竞赛答题软件进行互动,校园主要以学习方面上为主,竞赛答题软件是 ...

  5. [原创]商城系统下单库存管控系列杂记(二)(并发安全和性能部分延伸)

      商城系统下单库存管控系列杂记(二)(并发安全和性能部分延伸)     前言   参与过几个中小型商城系统的开发,随着时间的增长,以及对系统的深入研究和测试,发现确实有很多值得推敲和商榷的地方(总有 ...

  6. Java项目:仿小米电子产品售卖商城系统(java+SpringBoot+Vue+MySQL+Redis+ElementUI)

    源码获取:博客首页 "资源" 里下载! 项目描述:这是一个基于SpringBoot+Vue框架开发的仿小米电子产品售卖商城系统.首先,这是一个前后端分离的项目,代码简洁规范,注释说 ...

  7. Java项目:前台后台玩具商城系统(java+JSP+SSM+Springboot+Jsp+maven+Mysql)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统主要实现的功能有: 网上商城系统,前台+后台管理,用户注册,登录,商品展示,分组展示,搜索,收货地址管理,购物车管理,添 ...

  8. Java项目:化妆品商城系统(java+Springboot+ssm+mysql+jsp+maven)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统主要实现的功能有: 网上商城系统,前台+后台管理,用户注册,登录,上架展示,分组展示,搜索,收货地址管理,购物车管理,添 ...

  9. Java项目:网上商城系统(java+SSM+jsp+mysql+maven)

    源码获取:博客首页 "资源" 里下载! 一.项目简述功能 javaweb 网上商城系统,前台+后台管理,用户注册,登录,上哦展示,分组展示,搜索,收货地址管理,购物车管理,添加,购 ...

最新文章

  1. Matlab数据的可视化 -- 三维网格图形
  2. 湘苗培优 | 从入门到精通
  3. Tomcat组成与工作原理
  4. 从(0,0)到(n,n)——广度优先及其改进
  5. hdu 4925 Apple Tree--2014 Multi-University Training Contest 6
  6. 精打细算使用MaxCompute搭建数仓
  7. CentOS 7 编译安装 PHP 7
  8. shell 脚本创建虚拟机 并配置网卡ip地址(两个脚本)
  9. redis和oracle同步方案,redis与oracle之间怎么实现数据同步?
  10. 某程序员的薪水变化数据
  11. ESP32黑客帝国数字雨动画,矩阵它来了,ESP32+ST7789V液晶屏Arduino
  12. 《java语言程序设计》泽勒一致性问题
  13. 兀键和6键怎么判断_高中有机化学大兀键怎么判断电子数和参与成键的原子数?...
  14. 乐高魔方机器人编程及图纸_LEGO 机器人魔方还原基本方法与过程
  15. 一种简单的MOS管直流电机驱动电路
  16. arduino智能浇花系统_基于Arduino的远程自动浇花系统设计
  17. 似然函数以及最大似然估计
  18. 【算法模板】轻松学会KMP算法
  19. loopback interface data flow
  20. ShareList 列表程序-挂载GD/OD/蓝奏云/天翼云/和彩云......

热门文章

  1. Java while循环与dowhile循环
  2. 企业要实现用计算机完成存货管理,《会计信息系统》习题含答案
  3. 公司给出的选择,我该怎么做??请大家帮忙提提建议!!
  4. 淘宝高性能可伸缩平台架构简介
  5. 第23节--python创建网页
  6. 2018android旗舰手机,亓纪的想法 篇五:且用且珍惜:2018年LCD屏幕旗舰手机推荐(上)...
  7. [个人记录] AcWing 788 逆序对的数量
  8. 爬取《政府工作报告》词云展示并做词频统计
  9. 基于MSP430G2553和MATLAB Appdesigner的心电信号复现和心率显示
  10. 基于Android的短信应用开发(一)——界面设计开发