• ThinkPHP 分页中带入查询(搜索)条件


    parameter 属性赋值

    例如要检索用户表中状态为 1 (status=1) 并且电子包含 163 的用户,当提交表单时(注意表单是 GET 方式提交),形成的 URL 地址大致如下:

    http://www.5idev.com/index.php/Index/search/status/1/email/163

    在搜索操作(search)中主要代码如下:

    public function search(){
        $Dao = M("User");
        // 构造查询条件
        $condition['status'] = $_GET['status'];
        $condition['email'] = array('like',"%".$_GET['email']."%");
        // 计算总数
        $count = $Dao->where($condition)->count();
        // 导入分页类
        import("ORG.Util.Page");
        // 实例化分页类
        $p = new Page($count, 10);
        // 获取查询参数
        $map['status'] = $_GET['status'];
        $map['email'] = $_GET['email'];
        foreach($map as $key=>$val) {   
            $p->parameter .= "$key=".urlencode($val)."&";   
        }
        // 分页显示输出
        $page = $p->show();
    
        // 当前页数据查询
        $list = $Dao->where($condition)->order('uid ASC')->limit($p->firstRow.','.$p->listRows)->select();
    
        // 赋值赋值
        $this->assign('page', $page);
        $this->assign('list', $list);
    
        $this->display();
    }
    

    在页面的分页链接中,可以看到地址(如第 2 页)为:

    http://www.5idev.com/index.php/Index/search/status/1/email/163?status=1&email=163&p=2

    可以看见分页链接中已经包含了需要检索的 status=1&email=163 条件。当然,实际解析后的地址应该是:

    http://www.5idev.com/index.php/Index/search/status/1/email/163/p/2/

    这是因为 ThinkPHP 分页类对 URL 的处理还不够完美造成的。要对此进行改进,参看《ThinkPHP 定制分页风格及URL》。

    传入 parameter 参数

    带入查询条件的分页关键就是设置分页类的 parameter 属性值。除了上例中给 parameter 属性赋值外,也可以直接在实例化类的时候将 parameter 参数传入,两种方式结果是一致的:

    $parameter = 'status='.urlencode($_GET['status']).'&email='.urlencode($_GET['email']);
    // 实例化分页类时加入 parameter 参数
    $p = new Page($count, 10, $parameter);
    // 分页显示输出
    $page = $p->show();
    

    提示

    上述例子只是用于讲述分页中带入查询条件的使用,因此未对检索的关键字进行进行安全处理。实际使用中在进行查询之前,应对用户输入的关键词做安全性方面的处理。

  • 相关阅读:
    第03组 团队git现场编程实战
    第二次结对编程作业
    团队项目-选题报告
    第一次结对编程作业
    第一次编程作业
    软件工程第一次作业
    第09组 团队Git现场编程实战
    第二次结对编程作业
    团队项目-需求分析报告
    团队项目-选题报告
  • 原文地址:https://www.cnblogs.com/xiaofeng028/p/3731809.html
Copyright © 2020-2023  润新知