ThinkPHP 分頁功能梳理

2022-09-12 11:30:21 字數 3488 閱讀 8112

最近在開發乙個專案,使用了國內流行的thinkphp框架,我之前沒怎麼用過這個框架,也是臨時抱佛腳,用的不怎麼樣?可能理解不是很深刻,如果有說的不對或不正確的地方,請大家多包涵,多指教。

第二,說說這個框架的優點,這個框架能流行起來,一定有很多優點。我僅根據我的感受說三點:1)注釋完全中文化,我喜歡(因為俺e文不好);2)框架的功能實現比較簡潔,相比其它的框架,學習成本較低;3)廣泛使用cacha,大大提公升了**的執行速度。

說了這麼題外話,還沒有說到今天的主題知識---分頁。接下來,就詳細梳理一下,thinkphp分頁流程。

首先問兩個小白問題:

1)為什麼要分頁?

分頁確實有效,但它一定會加大系統的複雜度,但可否不分頁呢? 如果資料量少的話當然可以.但是對於企業資訊系統來說資料量不會限制在乙個小範圍內.如果不顧一切的select * from某個表,再將返回的資料一古腦的扔給客戶,即使客戶能夠忍受成千上萬足夠讓人眼花繚亂的**式資料,繁忙的網路,緊張的伺服器也會提出它們無聲的**,甚至有時會以徹底的罷工作為終結.

2)在**進行分頁比較合適?

要回答這個問題,就要了解我們的系統架構,現在的b/s系統一般都是三層架構,如下圖所示。

也就是說,分頁可以在瀏覽器,web伺服器和資料庫三個地方實現。究竟哪個地方好呢?為什麼?(這個問題留給大家思考)

上面說的都是原理,下面說說技術實現。thinkphp的分頁處理放在資料庫這一層上面,是非常合理的做法。下面分頁的例項基於thinkphp3.2.3實現。

首先,我們要建立需要分頁的資料。建表如下:

create table `my_usertest` (

`id` int(11) not null,

`account` varchar(32) not null,

`pwd` varchar(64) not null,

primary key (`id`)

) engine=innodb default charset=utf8;

自己可以根據需要插入多條資料。

第二步, 建立分頁物件函式,獲取thinkphp自帶的分頁元件。     

/*

* * todo 基礎分頁的相同**封裝,使前台的**更少

* @param $count 要分頁的總記錄數

* @param int $pagesize 每頁查詢條數

* @return \think\page */

function getpage($count, $pagesize = 10)

第三步,在控制器側,進行呼叫分頁物件。

public

function

showallusers()

第四步,頁面資料展示處理。

>分頁例項

title

>

<

style

>

.pages a,.pages span

.pages a,.pages li

.pages a.first,.pages a.prev,.pages a.next,.pages a.end

.pages a:hover

.pages span.current

style

>

head

>

<

body

>

<

table

width

="80%"

border

="1"

cellpadding

="1"

cellspacing

="1"

bgcolor

="#99cc33"

bordercolor

="#ffffff"

>

<

tr>

<

td colspan

="3"

bgcolor

="#ffffff"

class

="title"

align

="center"

>使用者表分頁

td>

tr>

<

tr class

="title"

>

<

td bgcolor

="#ffffff"

width

="44"

>id

td>

<

td bgcolor

="#ffffff"

width

="120"

>賬號

td>

<

td bgcolor

="#ffffff"

width

="223"

>密碼

td>

tr>

<

foreach

name

='select'

item

='user'

>

<

tr class

="content"

>

<

td bgcolor

="#ffffff"

> td

>

<

td bgcolor

="#ffffff"

> td

>

<

td bgcolor

="#ffffff"

> td

>

tr>

foreach

>

<

tr class

="content"

>

<

td colspan

="3"

bgcolor

="#ffffff"

><

div

class

="pages"

>

div>

td>

tr>

table

>

body

>

html

>

最後效果如下圖所示:

分頁邏輯梳理

分頁 後台web 接收當前頁和每頁顯示數 傳給service,獲取pagebean物件 存到request域,請求 到頁面 service 接收前頁和每頁顯示數 建立pagebean 把引數封裝到物件中 當前頁 前端 每頁顯示數 前端 總記錄數 dao 具體資料 dao 總頁數 手動計算 是否有餘數...

修改 ThinkPHP5 分頁功能

1 目標效果 每頁 3 條資料 page admin render return this fetch data admin page page 4 修改框架原始碼 依次找到thinkphp library tink paginator driver bootstrap.php。新增首頁按鈕方法 首...

thinkPHP統計排行與分頁顯示功能示例

1.分頁引數 count 總數firstrow 起始行listrows 每一次獲取記錄數 list 每一頁的記錄 要與count對應一致就行 2.分頁物件 可以針對真實的資料表 也可以針對統計出來的資料表,或者說是虛擬的表 因為limit是最後執行的,哪怕你進行group操作,哪怕你進行子查詢 ht...