• 批量更改会员权限


    我们通常都会遇到这样的一个需求,那就是批量操作!像这样:

    前端页面代码(一个tr的代码)及解析:

    <tr>
        <td><input name="ids" type="checkbox" class="dr_select" value="{$t.uid}" /></td>
        <td>{$t.uid}</td>
        <td>{$t.name}</td>
        <td>{if $t[groupid]==1}
                    待审核
            {else if $t[groupid]==3}
                    独立经纪人
            {else if $t[groupid]==4}
                    职业经纪人
            {else}
                    其他
            {/if}
        </td>
    </tr>

    这里会员组名称是根据会员组id来判别的,用的是php脚本(poscms的写法),记录是用foreach循环输出的,

    最后一行全选的前端代码如下:

        <tr>
            <th><input id="dr_select" type="checkbox" onClick="dr_selected()" />
            </th>
            <td colspan="10"  >
                <label>
                    <button onClick="changeGroup()">修改为</button>
                </label>
                <label>
                    <select id="groupid">
                        <option value="1" selected> 待审核 </option>
                        <option value="4" > 职业经纪人 </option>
                        <option value="3" > 独立经纪人 </option>
                    </select>
                </label>
            </td>
        </tr>

    全选函数dr_selected():

    function dr_selected() {
        if ($("#dr_select").prop("checked")) {
            $(".dr_select").prop("checked", true);
        } else {
            $(".dr_select").prop("checked", false);
        }
    }

    “修改为”按钮单击事件changeGroup():

    function changeGroup() {
        //获取记录条目中的所有复选框DOM
        var obj = $("input:checkbox[name='ids']");
        //获取单选框的值
        var groupid = $("#groupid").val();
        //定义一个数组ids来装所有选中条目的id值
        var ids = [];
        for(k in obj){
            if(obj[k].checked)
                ids.push(obj[k].value);
        }
        //向后台发起ajax请求,传递ids和将要转变的会员组id值
        $.ajax({
            type: "GET",
            url: siteurl,
            dataType: "json",
            data:{
                "c":"api",
                "m":"changegroup",
                "ids":ids,
                "groupid":groupid
                },
            success: function(text) {
                var _iframe = window.parent;
                var _div =_iframe.document.getElementById('rightMain');
                _div.contentWindow.location.reload(true);
            },
            error: function(text) {
                var _iframe = window.parent;
                var _div =_iframe.document.getElementById('rightMain');
                _div.contentWindow.location.reload(true);
            }
        });
    }

    由于不知道接口会不会出现“返回数据类型不是json的”错误,success回调和error回调都将刷新当前iframe页面,对于200OK

    状态ajax执行回调的不确定性,之前已经作过详解,不明白的可以参考博主的这篇博客:https://www.cnblogs.com/eco-just/p/9094940.html

    其实这里应该将iframe刷新的代码封装成一个函数,避免大家看得混乱,这里就不作封装了,但是实际写的时候要注意封装。

    接下来看接口是怎么处理的(admin.php?c=api&m=changegroup):

    public function changegroup() {
            $ids = $this->input->get('ids');
            $groupid = $this->input->get('groupid');
            foreach ($ids as $id) {  
                  $data = array('groupid'=>$groupid,);
                  $this->db->where('uid', $id);
                  $this->db->update('mt_member', $data);
            }
        }

    这里也不难理解,获取前台传来的ids数组和将转换的groupid,然后遍历这个ids数组,对每个id对应的数据库记录,

    进行groupid字段的更改。

    至此,批量操作的流程就已经完成了!

  • 相关阅读:
    Hadoop伪分布式环境安装
    记一次Xshell配置ssh免密登录时的问题
    HDFS学习笔记二
    HDFS学习笔记一
    十万级百万级数据量的Excel文件导入并写入数据库
    javascript内置对象:Date
    内置对象:Math
    javascript内置对象一:String
    javascript内置对象一: Array数组
    Javascritp 数据结构和二叉树算法
  • 原文地址:https://www.cnblogs.com/eco-just/p/9102923.html
Copyright © 2020-2023  润新知