之前的代码是这样的 在查询出来的结果的页面进行分页 我设置了一个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
有几个问题想问下楼主
把
num
的值保存在session
里有什么意义吗?如果有意义在什么地方会使用这个保存的num
的值呢什么情况下可以销毁
session
里num