php接口实现拖拽排序功能
时间:2021-01-27
来源:互联网
列表拖拽排序是一个很常见的功能,在后端接口处理中经常会用到,今天小编给大家带来了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];
}
//保存到数据库省略
}
总结
以上所述是小编给大家介绍的php接口实现拖拽排序功能,希望对大家有所帮助。
-
代号鸢二周年猫神嗔-第五阶段低练度简单 时间:2025-05-01
-
燕云十六声陌刀输出-陌刀怎么玩2.0 时间:2025-05-01
-
燕云陌刀怎么玩-嗟夫刀法八方风雷枪怎么玩 时间:2025-05-01
-
燕云伞扇2.45鹅战力提升-伞扇教学 时间:2025-05-01
-
燕云伞扇PVP新手必学连招-伞扇pvp怎么玩 时间:2025-05-01
-
恋与深空最快进度-万物觉醒之春2天搬空奖励 时间:2025-05-01
今日更新
-
php查找字符串出现次数的方法
阅读:28
-
php计算数组相同值出现次数的代码(array_count_values)
阅读:23
-
php合并数组中相同元素的方法
阅读:22
-
PHP让数组中有相同值的组成新的数组实例
阅读:21
-
Js+php实现异步拖拽上传文件示例
阅读:23
-
军师请布阵韩信技能强度怎么样?韩信玩法介绍!
阅读:19
-
芈月白晶晶皮肤上线:实锤!至尊宝白晶晶才是一对
阅读:21
-
LPL联赛将要上演冠军之周,各个时代的王者轮番登场,你最看好谁?
阅读:19
-
《和平精英》王一博捏脸数据一览
阅读:22
-
JKL回应队伍的问题,坦言过年不能回家很难过,还对Theshy念念不忘
阅读:19