最近在開發乙個專案,使用了國內流行的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...