首頁 >後端開發 >php教程 >TP5實作表格拖曳排序並儲存到資料庫的方法(附程式碼)

TP5實作表格拖曳排序並儲存到資料庫的方法(附程式碼)

不言
不言轉載
2019-03-20 10:44:343643瀏覽

這篇文章帶給大家的內容是關於TP5實作表格拖曳排序並儲存到資料庫的方法(附程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

前一段時間修改了一個舊的項目,客戶要求我將表格重新排序,並依照醫師的職稱排序。因為客戶的這個專案是醫院的人事系統,考慮到整個醫院有幾千號人,要是一個個按客戶的要求排得累壞我的小腰...幸好這時我想起了可以利用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方法中可以新增很多配置的參數,具體的可以查看這款插件的文檔。同樣網路上一搜一大堆,比如菜鳥教學就有。現在只是實現了在當前頁面排序,但資料庫還是老樣子。下面是我的把排序存到資料庫的方法。之前我的排序是按照資料表的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();
    }
}

這樣,每次前台拖曳排序都會觸發update函數,然後就會把新排序的ID值用ajax傳到後台,後台接收後,按順序重新修改sort值就可以.

本篇文章到這裡就已經全部結束了,更多其他精彩內容可以關注PHP中文網的JavaScript教學影片欄位!

以上是TP5實作表格拖曳排序並儲存到資料庫的方法(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除