這篇文章主要介紹了php介面實現拖曳排序功能,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
列表拖曳排序是一個很常見的功能,在後端介面處理中經常會用到,今天小編給大家帶來了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中文網其他相關文章!