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

查看:112
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆