首页 > TP框架的问题 大家帮我看看应该怎么改?

TP框架的问题 大家帮我看看应该怎么改?

之前的代码是这样的 在查询出来的结果的页面进行分页 我设置了一个session保存查询结果来进行分页 但是有个问题 这样设置session以后每次新打开这个页面总是显示这个结果 可能是session值没有销毁

 $num=I("post.num");
     session('num1',$num);
    $qq=M("qq");
    $count=$qq->where("num like '%s'",array(session('num1')))->count();
    $Page=new \Think\Page($count,10);
    $show=$Page->show();
    $list = $qq->where("num like '%s'",session('num1'))->limit($Page->firstRow.','.$Page->listRows)->select();
    $this->assign('list',$list);
    $this->assign('page',$show);
    $this->display(); 

后来我想办法把这个session值进行销毁 但又不影响分页效果 在空搜索或者新打开这个页面时销毁session 不让以前的查询结果显示出来 我在前面做个判断了 这样改了以后还是不行 每次新打开这个页面还是显示上次的搜索结果 刷新页面也还是显示 是我这个逻辑写的不对还是怎么了?想了很久也没有想出来 我这个是哪里的问题呢 应该怎么改呢

$qq=M("qq");
        $num=I('num','');//如果没有post值就为空
        session('num1',$num);//设置num1的session值
        $num1=session('num1');//赋值变量
        if($num){     //如果存在post值就设置num2的session值
            session('num2',$num);
            $num2=session('num2');//查询条件用$num2
        }else if($num1){ 
            $num2=$num1;//查询条件用$num2
        }else{
            session('num1',null);//否则就销毁session
            session('num2',null);
        }
        
        $count=$qq->where("num like '%s'",array($num2))->count();
        $Page=new \Think\Page($count,10);
        
        $show=$Page->show();
        $list = $qq->where("num like '%s'",$num2)->limit($Page->firstRow.','.$Page->listRows)->select();
        $this->assign('list',$list);
        $this->assign('page',$show);
        $this->display(); 

这个逻辑不行的,当用户点击第二页的行为是和刷新差不堵多的,所以判断用户到底是刷新还是点击第二页太麻烦。
还是直接用tp文档里自带的功能吧,分页带入查询条件


page类的show方法是生成分页的HTML,包括了分页按钮的URL,所以thinkphp page类后来提供了一个叫parameter的public数组变量,只要你给这个变量给一个参数他就会在保存你的查询条件,就是我昨天你之前一个问题里说的get传参,这里是page类自动完成的,你可以看下他的源码,比较简单

$Page->parameter["num"] = $num;

不需要保存session


有几个问题想问下楼主

  1. num的值保存在session里有什么意义吗?如果有意义在什么地方会使用这个保存的num的值呢

  2. 什么情况下可以销毁sessionnum

【热门文章】
【热门文章】