php接口实现拖拽排序功能实例

不言
Lepaskan: 2023-03-25 09:48:01
asal
1799 orang telah melayarinya

这篇文章主要介绍了关于php接口实现拖拽排序功能实例 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

我们如何学习列表拖拽排序功能,但是后端接口如何处理却是一个令人纠结的问题,如何实现才能达到效率最高呢

先分析一个场景,假如有一个页面有十条数据,所谓的拖拽就是在这十条数据来来回回的拖,但是每次拖动都会影响到其他数据
例如把最后一条拖到最前面,那么后面九条就自动往后移,反之也是,嗯~~~

先想象一下,排序号是固定的,就好像有十把椅子,每个椅子都是固定在那里的,移动的是上面的人,这样就不会影响到其他页面的数据了
而且每个人换的也是之前其他人的桌椅号码,这样也不用去想到底要加多少才能排在哪里。

接口设计

//$ids 这十条数据的id集合,逗号隔开的字符串//$oldIndex 原始位置,从0开始算//$newIndex 要拖动的位置function dragSort($ids,$oldIndex,$newIndex){    //保证查找出来的数据跟前台提交的顺序一致,这里要order by field
    //id 主键 sort 排序值
    $sql =  "select id,sort from 表名字 where id in ($ids) order by field(id, " . $ids . ") ";
    $list =  "这里省略,就是去数据库找嘛";    //id集合
    $idArr   = [];    //排序集合
    $sortArr = [];    foreach ($list as $item) {
        $idArr[]   = $item['id'];
        $sortArr[] = $item['sort'];
    }    //记录要拖动的id
    $oldValue = $idArr[$oldIndex];    //删除这个要拖动的id
    unset($idArr[$oldIndex]);    //插入新的位置,并自动移位
    array_splice($idArr, $newIndex, 0, $oldValue);    //重新设置排序
    $set = [];    for ($i = 0; $i < count($idArr); $i++) {
         $set[$i]['id']   = $idArr[$i];
         $set[$i]['sort'] = $sortArr[$i];
     }    //保存到数据库省略}
Salin selepas log masuk

相关推荐: 
微信公共账号开发模式PHP接口实现

Atas ialah kandungan terperinci php接口实现拖拽排序功能实例 . Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan