上移,下移 ,置顶,至尾,批量删除更新排序....

声明:所有文章仅仅是个人笔记,不用做教程,只适合自己用(因为我怕不符合大众,容易引起误导)

原理部分:

前提:在数据库设置一个sort,根据数据库数据的条数自增,不可重复。

 

上移:从前台获取排序字段(我把它定为sort);根据sort,找到要交换的数据的id备用;然后sort+1,找到相邻的上一条数据,取得他的id;然后进行更新操作,吧要交换的数据的sort变成刚刚查出来的上一条数据的sort也就是前面的(sort+1),然后把上一条数据的sort,变成从前台获取的sort;

下移 :与上移思路相反

置顶:和sort==1的数据进行交换sort;

至尾:计算出数据表总共有多少条数据,这个总数结束最后一条数据的sort,然后进行交换。

删除:吧所有大于sort的数据获取出来,然后进行遍历,一一给他们sort减一

批量删除更新排序:吧传过来的数据变成一个数组,重复删除即可。

 

代码:让sort自动增长

   public function ComnewsAdd(){
            if(request()->isPost()){
                $data=input('post.');
                $data['time']=strtotime(date('Y:m:d H:s:m'));
                
           
                //添加排序(重要部分)
                $count=db('comnews')->count();
                if($count){
                    $data['sort']=$count+1;
                }else{
                    $data['sort']=1;
                }

                $res=db('comnews')->insert($data);
                if($res){
                    $this->success('添加新闻成功','ComnewsLis');
                }else{
                    $this->error('添加新闻失败');
                }

            }

            return view('News/ComnewsAdd');
        }

 

只贴一个上移操作:

//向上移动
    public  function upsort(){
        $data=input('post.');
        $sort=$data['pai'];//要修改的sort
        $mydate=db('comnews')->where('sort','=',$sort)->find();
        $id=$mydate['id'];
        //上一条数据
        $topone=$sort+1;
        $toponeres=db('comnews')->where('sort','=',$topone)->find();
        if($toponeres){
            //取出上一条数据的id和sort
            $toponeid=$toponeres['id'];
            $toponesort=$toponeres['sort'];

            //进行更新
            db('comnews')->where('id',$id)->setField('sort',$toponesort);
            db('comnews')->where('id',$toponeid)->setField('sort',$sort);

        }else{
            echo "<script>alert('已经在最顶上');</script>";

        }
        $this->redirect('/zxhl/public/admin/comnews/comnewslis.html');

    }

 

批量删除:

public function del_all(){
        $data=input('post.');
        if($data!='null'){
            $ids=implode(',',$data['checkbox']);//对id进行接收

            $ids=explode(",",$ids);//放入数组中进行方便遍历
            for($i=0;$i<count($ids);$i++){
                //自身的sort
                $thesort=db('comnews')->field('sort')->where('id',$ids[$i])->find();
          $sortres=db('comnews')->field('id,sort')->where('sort','>',$thesort['sort'])->select();
                foreach($sortres as $key=>$value){
                //减一
            db('comnews')->where('id',$value['id'])->setField('sort',$value['sort']-1);
                }
            }
            if(db('comnews')->delete($ids)){
                $this->success('删除新闻成功','ComnewsLis');
            }else{
                $this->error('删除新闻失败');

            }
        }else{
            $this->error('未选中任何数据');

       }
    }

 

效果图:

 

删除前

 

 

批量删除  

删除后

 

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页