【PHP】 - 拖拽重新排序

转载地址


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

// 保证查找出来的数据跟前台提交的顺序一致,这里要order by field
// id 主键 sort 排序值

$ids = '1,2,3,4';

// 想要最终实现为 1,4,2,3 【下标是从0计算的】
$old_index = 3; // 原始下标, 4 所在下标为 3
$new_index = 1; // 新下标
$sql =  "select id,sort from 表名字 where id in ($ids) order by field(id, " . $ids . ") ";
$list =  "这里省略,就是执行数据库查询找嘛";

// 重新排序
$new_info = sorts($info, $old_index, $new_index);
/**
 * 根据起始位置结束位置实现拖拽排序
 * @param $list array 原始需要排序的数组数据
 * @param $oldIndex int 排序数据原始位置
 * @param $newIndex int 排序数据新的位置
 * @return array
 */
function sorts(array $list, int $oldIndex, int $newIndex): array
{
    $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];
    }

    //返回排序后的数据
    return $set;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vxe-table是一个基于Vue.js的表格组件库,支持拖动排序功能。使用vxe-table实现拖动排序需要在表格中添加drag-config属性,并设置相关配置项。 具体步骤如下: 1. 在表格中添加drag-config属性,值为一个对象,包含以下配置项: - sortable:是否开启拖动排序功能,默认为false。 - trigger:触发拖动排序的元素选择器,默认为'.vxe-table--wrapper'。 - list:排序的数据列表,必填项。 - group:分组名称,用于多个表格之间的拖动排序,默认为null。 - filter:过滤器函数,用于过滤不需要排序的行,默认为null。 - onDragStart:拖动开始时的回调函数。 - onDragEnd:拖动结束时的回调函数。 2. 在表格中添加drag-header-config属性,值为一个对象,包含以下配置项: - sortable:是否开启拖动排序功能,默认为false。 - trigger:触发拖动排序的元素选择器,默认为'.vxe-table--header'。 - list:排序的数据列表,必填项。 - group:分组名称,用于多个表格之间的拖动排序,默认为null。 - filter:过滤器函数,用于过滤不需要排序的列,默认为null。 - onDragStart:拖动开始时的回调函数。 - onDragEnd:拖动结束时的回调函数。 3. 在表格中添加drag-row-config属性,值为一个对象,包含以下配置项: - sortable:是否开启拖动排序功能,默认为false。 - trigger:触发拖动排序的元素选择器,默认为'.vxe-table--body tbody tr'。 - list:排序的数据列表,必填项。 - group:分组名称,用于多个表格之间的拖动排序,默认为null。 - filter:过滤器函数,用于过滤不需要排序的行,默认为null。 - onDragStart:拖动开始时的回调函数。 - onDragEnd:拖动结束时的回调函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值