列表拖拽排序是一个很常见的功能,在后端接口处理中经常会用到,今天小编给大家带来了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接口实现拖拽排序功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程学习网网站的支持!
				 沃梦达教程
				
			本文标题为:php接口实现拖拽排序功能
				
        
 
            
        
             猜你喜欢
        
	     - Laravel balde模板文件中判断数据为空方法 2023-08-30
 - PHP仿tp实现mvc框架基本设计思路与实现方法分析 2022-10-18
 - PHP中PDO事务处理操作示例 2022-10-15
 - PHP实现微信支付(jsapi支付)流程步骤详解 2022-10-09
 - php微信公众号开发之秒杀 2022-11-23
 - 用nohup命令实现PHP的多进程 2023-09-02
 - laravel实现按月或天或小时统计mysql数据的方法 2023-02-22
 - windows下9款一键快速搭建PHP本地运行环境的好工具(含php7.0环境) 2023-09-02
 - laravel通用化的CURD的实现 2023-03-17
 - PHP简单实现二维数组的矩阵转置操作示例 2022-10-02
 
						
						
						
						
						
				
				
				
				