溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

TP5如何實現表格拖動排序并保存到數據庫的方法

發(fā)布時間:2020-10-16 14:47:07 來源:億速云 閱讀:261 作者:小新 欄目:編程語言

小編給大家分享一下TP5如何實現表格拖動排序并保存到數據庫的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

前一段時間修改了一個舊的項目,客戶要求我給表格重新排序,按醫(yī)生的職稱排序。因為客戶的這個項目是醫(yī)院的人事系統,考慮到整個醫(yī)院有幾千號人,要是一個個按客戶的要求排得累壞我的小腰...幸好這時我想起了可以利用jqueryUi插件實現這個功能。但是jqueryUi插件只能在當前頁面上排序,頁面一刷新又恢復原樣了。于是我就研究如何拖動排序并永久把排序保存到數據庫中,做了1小時,做出來了。這里記錄一下,如果有同學有更好的思路,請不吝賜教..
首先下載jqueryUi插件,網上一搜就要,這里略過。
下載完成后,引入頁面。加入一行代碼就可以:

<script type="text/javascript" src="jquery-ui.js"></script>
<script type="text/javascript">
  $(document).ready(function(){
    $("#sort tbody").sortable();
});
</script>

需要注意的是,選擇器應該選中表格的tbody. sort方法中可以添加很多配置的參數,具體的可以查看這款插件的文檔。同樣網上一搜一大堆,比如菜鳥教程就有?,F在只是實現了在當前頁面排序,但數據庫還是老樣子。下面是我的把排序保存到數據庫的方法。之前我的排序是按照數據表的ID值,默認倒序的,現在我可以給數據表中加一個sort字段,或者XX字段,代表排序的數字。 在每次拖動完成后,利用這款插件內置的update函數,通過ajax方式把排序完成的每個行的ID傳到后臺。在后臺控制器里接收后,遍歷,把排在第一行的數據的sort值改為鍵值+1.
比如排序完成后第一行的數據ID值為8,第二行的數據ID為6,第三行為2,后臺接收遍歷時,ID為8的數據肯定是第一個遍歷的,那該數據在foreach里面的鍵值肯定是0,即$k為0,那把它的排序改為$k+1即為0+1等于1.同理,第二個數據的sort就為$k+1即為2,以此類推.然后按sort值正序排列即可.
下面是前臺代碼:

$("#sort tbody").sortable({
        update:function () {
            var idArr = [];
            $("input[name='id']").each(function () {//遍歷每一行的ID值
                idArr.push($(this).val());//把拍完序的數據ID依次推入數組
            })
            $.ajax({
                type: "POST",
                dataType: "json",
                url: "__URL__/staff/pinyong",
                data:{idArr:idArr},
                success:function (data) {
                    layer.msg(data['msg'],{icon:1,time:2000});
                },
                error:function (request) {
                    console.log(request);
                }
            });
        }
    });

這個是一個老項目,TP3寫的,所以我沒用TP5的寫法,TP5只需要把url地址改為{:url(...)}的寫法就行.

后臺代碼:(也是TP3的寫法,TP5只要用model方法取表模型,然后再改改save方法就可以)

  public function pinyong(){
   if (IS_POST) {
        //前臺post方式傳數組的話,后臺必須指定接收格式才能接收,否則會報錯
        $arr = I('idArr/a');
        foreach ($arr as $k => $v) {
            M('pinyong')->where('id','eq',$v)->save(['sort'=>$k + 1]);
        }
        $this->success('排序成功');
    } else {
        $this->display();
    }
}

這樣,每次前臺拖動排序都會觸發(fā)update函數,然后就會把新排序的ID值用ajax傳到后臺,后臺接收后,按順序重新修改sort值就可以.

看完了這篇文章,相信你對TP5如何實現表格拖動排序并保存到數據庫的方法有了一定的了解,想了解更多相關知識,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI