ThinkPHP5实现答题管理系统(二)

简介: 好的,现在我们来实现删除题目模板的功能,删除功能不难做,主要我们这次实现的是批量删除功能。一.思路整理首先我们删除模板是根据模板的id来删除的,不管是单项删除还是批量删除,我们这里使用layui获取当前行的功能就能获取模板的id其次不管单项删除还是批量删除,只要将id放入数组中,后端对数组进行遍历,就能达到单项删除/批量删除二.代码实现思路实现以后,我们上代码。

好的,现在我们来实现删除题目模板的功能,删除功能不难做,主要我们这次实现的是批量删除功能。

一.思路整理

首先我们删除模板是根据模板的id来删除的,不管是单项删除还是批量删除,我们这里使用layui获取当前行的功能就能获取模板的id

其次不管单项删除还是批量删除,只要将id放入数组中,后端对数组进行遍历,就能达到单项删除/批量删除

二.代码实现

思路实现以后,我们上代码。

View层:

 var id_array = []; //获取选中行
            // 获取选中行 这里我们可以选择删除 这里的id_array是一个隐藏的值 device对应device_id user对应code survry对应model_id
            table.on('checkbox(test)', function(obj) { //监听复选框
                if (obj.type == 'all') {
                    if (obj.checked == true) {
                        var data = table.cache.dataCheck; //批量操作的表格复选框
                        id_array = [];
                        for (var l = 0; l < data.length; l++) {
                            id_array.push(data[l].model_id);
                        }
                        console.log(id_array);
                    } else {
                        id_array = [];
                    }
                } else {
                    if (obj.checked == true) {
                        id_array.push(obj.data.model_id);
                        console.log(id_array);
                    } else {
                        var index = id_array.indexOf(obj.data.model_id);
                        id_array.splice(index, 1);
                        console.log(id_array);
                    }
                }
            });

            $('#btn-delete-all').click(function() { //删除全部通过一个获取选中行的值,来删除
                layer.confirm('您确定要删除这些数据吗?', function(index) {
                    //打开正在加载中弹出层
                    layer.msg('加载中', {
                        icon: 16,
                        shade: 0.01,
                        time: '9999999'
                    });
                    var url = "{:url('survey/del_model')}";
                    var data = {
                        model_id: id_array //这里将当前的model_id传到后端
                    }
                    $.post(url, data, function(data) {
                        layer.close(layer.index); //关闭正在加载中弹出层
                        console.log(id_array);
                        if (data.code == 1) {
                            layer.msg(data.msg, {
                                icon: 6
                            });
                            location.reload();
                        } else {
                            layer.msg(data.msg, {
                                icon: 5
                            });
                        }
                    }, "json");
                });

            });

首先对数据表格进行监听,如果数据表格的当前行被选中,则往id_array数组中push一个id,有多少个,push多少个,而后我们将数组用ajax上传,键名为model_id.

Controller层:

    //删除
    public function del_model()
    {
        //我们将选中行的id_array赋给了device_id /a时进行批量操作的 是进行批量删除的
        $model_id = input('post.model_id/a');
        if (empty($model_id)) {
            returnjson([3, 'warning', '']);
        }
        $str_device_id = implode(',', $model_id);//将数组分割为字符串
        $where['model_id'] = array('in', $str_device_id);
        $is_answer = db('psg_qsn_r')->where($where)->select();
        if (!empty($is_answer)) {
            returnjson([2, '抱歉,这份题被人答过了,无法删除', $model_id]);
        }
        $del_res = db('qsn_model')->where($where)->delete();
        if ($del_res) {
            returnjson([1, 'succes', $model_id]);
        } else {
            returnjson([2, 'fail', $model_id]);
        }
    }

这里进行说明一下,ThinkPHP对数组上传,要加入/a进行识别,表明为数组,这里对数组进行了非空判断,以及用implode()函数将数组分割为字符串,进行批量查询,如果题目被人答过了,返回回答过,如果没有被答过题,就删除题目。

我们来试验一下。


img_aaf25921d88f73856d704c481b9e701d.gif
1.gif

成功啦,下一节我们讲对应某一套题目模板下的题目的增删。

相关文章
|
消息中间件 存储 Java
使用Java构建可扩展的消息队列系统
使用Java构建可扩展的消息队列系统
Qml实用技巧:在可视元素之前半透明覆盖一个可视元素,阻止鼠标透(界面)传(防止点击到被遮挡的按钮)
Qml实用技巧:在可视元素之前半透明覆盖一个可视元素,阻止鼠标透(界面)传(防止点击到被遮挡的按钮)
Qml实用技巧:在可视元素之前半透明覆盖一个可视元素,阻止鼠标透(界面)传(防止点击到被遮挡的按钮)
|
4月前
|
安全 小程序 API
【03】支付宝支付商户申请下户到配置完整流程-对签约申请已通过商户进行开通API支付-创建应用-申请支付宝公钥-应用公钥-支付宝密钥-配合支付宝官方证书生成工具+配置完整流程-优雅草卓伊凡
【03】支付宝支付商户申请下户到配置完整流程-对签约申请已通过商户进行开通API支付-创建应用-申请支付宝公钥-应用公钥-支付宝密钥-配合支付宝官方证书生成工具+配置完整流程-优雅草卓伊凡
375 0
【03】支付宝支付商户申请下户到配置完整流程-对签约申请已通过商户进行开通API支付-创建应用-申请支付宝公钥-应用公钥-支付宝密钥-配合支付宝官方证书生成工具+配置完整流程-优雅草卓伊凡
|
8月前
|
机器学习/深度学习 自然语言处理 算法
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
338 1
|
8月前
|
网络协议 数据挖掘 5G
适用于金融和交易应用的低延迟网络:技术、架构与应用
适用于金融和交易应用的低延迟网络:技术、架构与应用
272 5
|
8月前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
本文介绍了如何在Spring Boot项目中实现MVC分层架构,通过将代码划分为controller、service、dao和entity四个部分,实现高内聚低耦合的设计。示例项目包括用户增删查改功能,详细展示了各层的具体实现及运行测试。
199 11
|
10月前
|
API
简述a标签超链接target属性的取值和作用
简述a标签超链接target属性的取值和作用
|
9月前
|
存储 监控 安全
贴片卡的应用场景
贴片卡,通常指的是尺寸小巧、可以直接贴在或嵌入到产品、设备或表面的卡片或芯片,它们集成了电路、存储器、微处理器等电子元件。这些卡片广泛应用于多个行业和领域,以实现数据的存储、传输、认证或控制等功能。以下是贴片卡的一些主要应用场景:
|
12月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue个人博客系统设计和实现(源码+LW+部署讲解)
基于SpringBoot+Vue个人博客系统设计和实现(源码+LW+部署讲解)
172 7
|
网络协议 PHP 网络虚拟化
BGP MPLS VPN(OPTION A)实验笔记
BGP MPLS VPN(OPTION A)实验笔记
325 0