thinkphp - TP框架的问题 大家帮我看看应该怎么改?
本文介绍了thinkphp - 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();
解决方案
page类的show方法是生成分页的HTML,包括了分页按钮的URL,所以thinkphp page类后来提供了一个叫parameter的public数组变量,只要你给这个变量给一个参数他就会在保存你的查询条件,就是我昨天你之前一个问题里说的get传参,这里是page类自动完成的,你可以看下他的源码,比较简单
$Page->parameter["num"] = $num;
这篇关于thinkphp - TP框架的问题 大家帮我看看应该怎么改?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文