php接口实现拖拽排序功能
来源:http://news.mkq.online/ 作者:牛站新闻
列表拖拽排序是一个很常见的功能,但是后端接口如何处理却是一个令人纠结的问题
如何实现才能达到效率最高呢?
先分析一个场景,假如有一个页面有十条数据,所谓的拖拽就是在这十条数据来来回回的拖,但是每次拖动都会影响到其他数据例如把最后一条拖到最前面,那么后面九条就自动往后移,反之也是,嗯~~~
先想象一下,排序号是固定的,就好像有十把椅子,每个椅子都是固定在那里的,移动的是上面的人,这样就不会影响到其他页面的数据了而且每个人换的也是之前其他人的桌椅号码,这样也不用去想到底要加多少才能排在哪里。
接口设计:
view source
print
?
01
//$ids 这十条数据的id集合,逗号隔开的字符串
02
//$oldIndex 原始位置,从0开始算
03
//$newIndex 要拖动的位置
04
function dragSort($ids,$oldIndex,$newIndex)
05
{
06
//保证查找出来的数据跟前台提交的顺序一致,这里要order by field
07
//id 主键 sort 排序值
08
$sql = "select id,sort from 表名字 where id in ($ids) order by field(id, " . $ids . ") ";
09
$list = "这里省略,就是去数据库找嘛";
10
//id集合
11
$idArr = [];
12
//排序集合
13
$sortArr = [];
14
foreach ($list as $item) {
15
$idArr[] = $item['id'];
16
$sortArr[] = $item['sort'];
17
}
18
//记录要拖动的id
19
$oldValue = $idArr[$oldIndex];
20
//删除这个要拖动的id
21
unset($idArr[$oldIndex]);
22
//插入新的位置,并自动移位
23
array_splice($idArr, $newIndex, 0, $oldValue);
24
//重新设置排序
25
$set = [];
26
for ($i = 0; $i < count($idArr); $i++) {
27
$set[$i]['id'] = $idArr[$i];
28
$set[$i]['sort'] = $sortArr[$i];
29
}
30
//保存到数据库省略
31
}
- php接口实现拖拽排序功能
- 调用支付宝PHP接口API实现在线即时支付功能(UTF-8编码)
- 关于UGUI实现拖拽功能的接口(IBeginDragHandler、IEndDragHandler、IDragHandler )需注意的问题
- 调用支付宝PHP接口API实现在线即时支付功能(UTF-8编码)
- 不使用EventSystem的接口,使用EventTrigger实现拖拽交换功能
- Java实现拖拽列表项的排序功能
- jquery实现鼠标拖拽排序功能
- 【UWP】拖拽列表项的排序功能实现
- php调用支付宝PHP接口API实现在线即时支付功能
- Java编程之TreeSet排序两种解决方法(1)元素自身具备比较功能,元素需要实现Comparable接口覆盖compare(2)创建根据自定义Person类的name进行排序的Comparator
- php二维数组多字段排序实现mysql order功能
- js 处理form表单整理成数组,结合php 完成排序功能的实现
- ListBox实现拖拽排序功能
- 通过js 处理form表单整理成数组,结合php 完成排序功能的实现
- PHP简单实现多维数组合并与排序功能示例
- 使用php实现快钱支付功能(涉及到接口)
- PHP基于双向链表与排序操作实现的会员排名功能示例
- PHP--用万网的接口实现域名查询功能
- PHP中利用Telegram的接口实现免费的消息通知功能
- fileuploadJs+JcropJs+php综合小应用 实现图片拖拽上传与裁剪功能的demo