佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > php接口實(shí)現(xiàn)拖拽排序功能

php接口實(shí)現(xiàn)拖拽排序功能

熱門(mén)標(biāo)簽:Linux服務(wù)器 電子圍欄 科大訊飛語(yǔ)音識(shí)別系統(tǒng) Mysql連接數(shù)設(shè)置 服務(wù)器配置 團(tuán)購(gòu)網(wǎng)站 銀行業(yè)務(wù) 阿里云

列表拖拽排序是一個(gè)很常見(jiàn)的功能,但是后端接口如何處理卻是一個(gè)令人糾結(jié)的問(wèn)題

如何實(shí)現(xiàn)才能達(dá)到效率最高呢?

先分析一個(gè)場(chǎng)景,假如有一個(gè)頁(yè)面有十條數(shù)據(jù),所謂的拖拽就是在這十條數(shù)據(jù)來(lái)來(lái)回回的拖,但是每次拖動(dòng)都會(huì)影響到其他數(shù)據(jù)例如把最后一條拖到最前面,那么后面九條就自動(dòng)往后移,反之也是,嗯~~~

先想象一下,排序號(hào)是固定的,就好像有十把椅子,每個(gè)椅子都是固定在那里的,移動(dòng)的是上面的人,這樣就不會(huì)影響到其他頁(yè)面的數(shù)據(jù)了而且每個(gè)人換的也是之前其他人的桌椅號(hào)碼,這樣也不用去想到底要加多少才能排在哪里。

接口設(shè)計(jì):

//$ids 這十條數(shù)據(jù)的id集合,逗號(hào)隔開(kāi)的字符串
//$oldIndex 原始位置,從0開(kāi)始算
//$newIndex 要拖動(dòng)的位置
function dragSort($ids,$oldIndex,$newIndex)
{
  //保證查找出來(lái)的數(shù)據(jù)跟前臺(tái)提交的順序一致,這里要order by field
  //id 主鍵 sort 排序值
  $sql = "select id,sort from 表名字 where id in ($ids) order by field(id, " . $ids . ") ";
  $list = "這里省略,就是去數(shù)據(jù)庫(kù)找嘛";
  //id集合
  $idArr  = [];
  //排序集合
  $sortArr = [];
  foreach ($list as $item) {
    $idArr[]  = $item['id'];
    $sortArr[] = $item['sort'];
  }
  //記錄要拖動(dòng)的id
  $oldValue = $idArr[$oldIndex];
  //刪除這個(gè)要拖動(dòng)的id
  unset($idArr[$oldIndex]);
  //插入新的位置,并自動(dòng)移位
  array_splice($idArr, $newIndex, 0, $oldValue);
  //重新設(shè)置排序
  $set = [];
  for ($i = 0; $i  count($idArr); $i++) {
     $set[$i]['id']  = $idArr[$i];
     $set[$i]['sort'] = $sortArr[$i];
   }
  //保存到數(shù)據(jù)庫(kù)省略
}

總結(jié)

以上所述是小編給大家介紹的php接口實(shí)現(xiàn)拖拽排序功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • PHP實(shí)現(xiàn)Google plus的好友拖拽分組效果
  • Js+php實(shí)現(xiàn)異步拖拽上傳文件

標(biāo)簽:廣元 大理 蚌埠 棗莊 江蘇 衡水 衢州 萍鄉(xiāng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php接口實(shí)現(xiàn)拖拽排序功能》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話(huà)咨詢(xún)

    • 400-1100-266
    沁水县| 林芝县| 大洼县| 离岛区| 辽中县| 镶黄旗| 永济市| 湟中县| 嘉黎县| 台山市| 盐城市| 济源市| 晋中市| 广汉市| 汽车| 格尔木市| 普格县| 哈尔滨市| 德州市| 灵山县| 教育| 稷山县| 通河县| 清徐县| 勃利县| 巴林左旗| 临洮县| 崇州市| 屯昌县| 长乐市| 商洛市| 信阳市| 上栗县| 永年县| 乐平市| 大足县| 侯马市| 南雄市| 南江县| 隆化县| 津南区|