1. 程式人生 > >tp3.2.3保持搜尋條件的分頁

tp3.2.3保持搜尋條件的分頁

一、背景

      之前用tp做頂部搜尋,做完之後也沒注意那麼多。後來測試的時候才發現,點選分頁的下一頁,我們之前的搜尋條件就沒用了。。這就有點不合適了,因此開始踩坑。

      我這裡用的是Post方式提交的搜尋條件。檢視開發手冊,發現tp手冊中提供瞭解決方案:

這裡寫圖片描述

      手冊上寫的是很清楚,但是在我這裡還是行不通。可能是因為我用的是自定義分頁類的原因吧。無奈之下改成了GET方式提交搜尋條件。

二、步驟

1、首先貼出我的分頁方法。這個方法是寫在Common目錄下的function.php中,作為公用的分頁方法。

/**
 *
 * @param $count 要分頁的總記錄數
 * @param int $pagesize
每頁查詢條數 * @param $where 傳遞過來的查詢條件 * @return \Think\Page */ function getNewPage($count, $pagesize,$where) { $p = new Think\Page($count, $pagesize); $p->setConfig('header', '<li class="rows">共<b>%TOTAL_ROW%</b>條記錄 第<b>%NOW_PAGE%</b>頁/共<b>%TOTAL_PAGE%</b>頁</li>'
); $p->setConfig('prev', '上一頁'); $p->setConfig('next', '下一頁'); $p->setConfig('last', '末頁'); $p->setConfig('first', '首頁'); $p->setConfig('theme', '%FIRST%%UP_PAGE%%LINK_PAGE%%DOWN_PAGE%%END%%HEADER%'); $p->lastSuffix = false;//最後一頁不顯示為總頁數 return $p;

      這裡不用tp自帶分頁的原因是,自帶的分頁實在太醜了。。有點不忍直視,所以就改了一下樣式,分頁方法還是一樣的。

2、GET表單提交條件。

1)我之前做的搜尋條件是POST方式提交的,連結如下:

2)該用GET方法之後,只是獲取引數的方式由POST_GET,條件部分,我們還是根據條件組成了陣列。

//$where即為搜尋條件
  if($openid){
        $where['openid'] = ['EQ', $openid];
      }
      if($nickname){
        $where['nickname'] = ['EQ', $nickname];
      }

3)如果想要點選分頁的其他頁,保持我們的搜尋條件,那我們就需要把這個搜尋條件$where傳入到分頁方法中:

//傳入$where
  $p = getpage($count,$page,$where);
//在分頁方法中加上一段程式碼:
 $p = new Think\Page($count, $pagesize);
  foreach($where as $key=>$val) {
    $p->parameter  .=  "$key=".urlencode($val).'&';
}

      這裡,我們相當於把搜尋條件的陣列傳入到分頁方法,然後迴圈拼接搜尋條件中的條件。這樣就能實現,我們點選分頁的時候,會自動帶上我們的搜尋條件。

例如:
這裡寫圖片描述

點選第二頁,頂部的url會自動帶上搜索條件。這樣,分頁就成功保持住了搜尋條件了。

end