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 相关文章推荐
用ODBC的分页显示
Oct 09 PHP
PHP4 与 MySQL 数据库操作函数详解
Dec 06 PHP
php UTF8 文件的签名问题
Oct 30 PHP
PHP中对用户身份认证实现两种方法
Jun 04 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
Jun 07 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
Jun 25 PHP
PHP简单生成缩略图相册的方法
Jul 29 PHP
学习php设计模式 php实现建造者模式
Dec 07 PHP
PHP实现图片上传并压缩
Dec 22 PHP
利用PHP生成静态html页面的原理
Sep 30 PHP
php实现的表单验证类完整示例
Aug 13 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
Oct 24 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
ECMall支持SSL连接邮件服务器的配置方法详解
2014/05/19 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
DWR实现模拟Google搜索效果实现原理及代码
2013/01/30 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
2016/07/04 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
2017/01/19 Javascript
bootstrap中模态框、模态框的属性实例详解
2017/02/17 Javascript
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
vue-router命名路由和编程式路由传参讲解
2019/01/19 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
[03:56]还原FTP电影首映式 DOTA2群星拼出遗迹世界
2014/03/26 DOTA
[50:22]完美盛典-2018年度红毯走秀
2018/12/16 DOTA
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
python实现发送邮件功能代码
2017/12/14 Python
TensorFlow 合并/连接数组的方法
2018/07/27 Python
从0开始的Python学习014面向对象编程(推荐)
2019/04/02 Python
Python中字符串与编码示例代码
2019/05/20 Python
Django REST Framework之频率限制的使用
2019/09/29 Python
python获取响应某个字段值的3种实现方法
2020/04/30 Python
如何快速一次性卸载所有python包(第三方库)呢
2020/10/20 Python
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
甜美蛋糕店创业计划书
2014/01/30 职场文书
公司活动方案范文
2014/03/06 职场文书
投标承诺书范本
2014/03/27 职场文书
音乐兴趣小组活动总结
2014/07/07 职场文书
物流仓管员岗位职责
2015/04/01 职场文书
2015年科研工作总结范文
2015/05/13 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
《正面管教》读后有感:和善而坚定的旅程
2019/12/19 职场文书
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS
Python中的 enumerate和zip详情
2022/05/30 Python