php接口实现拖拽排序功能


Posted in PHP onApril 23, 2018

列表拖拽排序是一个很常见的功能,但是后端接口如何处理却是一个令人纠结的问题

如何实现才能达到效率最高呢?

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

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

接口设计:

//$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接口实现拖拽排序功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
php页面缓存ob系列函数介绍
Oct 18 PHP
利用PHP+JS实现搜索自动提示(实例)
Jun 09 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
Nov 12 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
Jan 07 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
Apr 01 PHP
PHP操作MySQL事务实例
Nov 05 PHP
php把数组值转换成键的方法
Jul 13 PHP
Yii中CGridView禁止列排序的设置方法
Jul 12 PHP
CI框架入门之MVC简单示例
Nov 21 PHP
thinkPHP统计排行与分页显示功能示例
Dec 02 PHP
PHP中命名空间的使用例子
Mar 22 PHP
PHP基础之输出缓冲区基本概念、原理分析
Jun 19 PHP
PHP基于SPL实现的迭代器模式示例
Apr 22 #PHP
PHP生成推广海报的方法分享
Apr 22 #PHP
PHP排序算法之归并排序(Merging Sort)实例详解
Apr 21 #PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
Apr 21 #PHP
Laravel模型间关系设置分表的方法示例
Apr 21 #PHP
PHP排序算法之基数排序(Radix Sort)实例详解
Apr 21 #PHP
PHP排序算法之堆排序(Heap Sort)实例详解
Apr 21 #PHP
You might like
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
Yii实现Command任务处理的方法详解
2016/07/14 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
php实现构建排除当前元素的乘积数组方法
2018/10/06 PHP
jQuery 1.0.2
2006/10/11 Javascript
图像替换新技术 状态域方法
2010/01/28 Javascript
jQuery.getScript加载同域JS的代码
2012/02/13 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
B/S模式项目中常用的javascript汇总
2013/12/17 Javascript
jquery live()调用不存在的解决方法
2014/02/26 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
2015/07/21 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
2016/01/06 Javascript
jQuery Mobile中的button按钮组件基础使用教程
2016/05/23 Javascript
jQuery Easyui快速入门教程
2016/08/21 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
2016/09/19 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
2018/10/12 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
jQuery HTML获取内容和属性操作实例分析
2020/05/20 jQuery
[00:31]DOTA2上海特级锦标赛 Fnatic战队宣传片
2016/03/04 DOTA
Python内置函数reversed()用法分析
2018/03/20 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
Python设计模式之享元模式原理与用法实例分析
2019/01/11 Python
python urllib爬虫模块使用解析
2019/09/05 Python
python多进程间通信代码实例
2019/09/30 Python
爱尔兰灯和灯具网上商店:Lights.ie
2018/03/26 全球购物
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
美国领先的在线旅游网站:Orbitz
2018/11/05 全球购物
No7 Beauty美国官网:英国国民护肤品牌
2019/10/31 全球购物
金鑫耀Java笔试题
2014/09/06 面试题
树转促学习心得体会
2014/09/10 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2014年教育教学工作总结
2014/11/13 职场文书
2014财务年终工作总结
2014/12/08 职场文书
学生会任命书范本
2015/09/21 职场文书
python实现网络五子棋
2021/04/11 Python