php接口实现拖拽排序功能
发布:smiling 来源: PHP粉丝网 添加日期:2021-09-12 15:00:40 浏览: 评论:0
列表拖拽排序是一个很常见的功能,但是后端接口如何处理却是一个令人纠结的问题
如何实现才能达到效率最高呢?
先分析一个场景,假如有一个页面有十条数据,所谓的拖拽就是在这十条数据来来回回的拖,但是每次拖动都会影响到其他数据例如把最后一条拖到最前面,那么后面九条就自动往后移,反之也是,嗯~~~
先想象一下,排序号是固定的,就好像有十把椅子,每个椅子都是固定在那里的,移动的是上面的人,这样就不会影响到其他页面的数据了而且每个人换的也是之前其他人的桌椅号码,这样也不用去想到底要加多少才能排在哪里。
接口设计:
- //$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接口实现拖拽排序功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。
Tags: php接口 php拖拽排序
相关文章
- ·php数组 类和对象 接口使用方法(2014-09-08)
- ·php 支付宝接口程序源码(2014-09-09)
- ·php飞信接口实例应用代码(2014-09-09)
- ·微信公众平台消息接口校验与消息接口响应例子(2014-09-22)
- ·php天翼开放平台短信发送接口实现(2014-09-22)
- ·PHP接口开发加密技术实例原理与例子(2015-04-13)
- ·PHP接口开发签名验证原理详解(2015-12-10)
- ·php版本的支付宝服务窗API接口的开发(2016-07-15)
- ·php抽象类与接口的区别详解(2018-10-30)
- ·PHP接口多继承及tarits实现多继承效果的方法(2021-08-27)
- ·详细对比php中类继承和接口继承(2021-10-31)
- ·php抽象类和接口知识点整理总结(2021-12-08)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)