国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) php框架 ThinkPHP thinkphp如何實(shí)作分頁(yè)

thinkphp如何實(shí)作分頁(yè)

Apr 11, 2023 am 10:42 AM

ThinkPHP是一款基於MVC開(kāi)發(fā)模式的PHP框架,既然是開(kāi)發(fā)MVC應(yīng)用,就少不了分頁(yè)的功能。那麼,ThinkPHP如何實(shí)現(xiàn)分頁(yè)呢?以下就為大家介紹ThinkPHP如何實(shí)現(xiàn)分頁(yè)。

一、ThinkPHP分頁(yè)的基本概念

分頁(yè)就是將一個(gè)大的資料集合分成N頁(yè),讓使用者只能查看其中的一部分。 ThinkPHP中分頁(yè)分為兩種,一是普通分頁(yè),另一種是AJAX分頁(yè)。

普通分頁(yè),就是每一頁(yè)都需要刷新整個(gè)頁(yè)面,資料透過(guò)PHP程式碼從伺服器端取得出來(lái),再回到客戶端,這種方式的資料互動(dòng)效率低,但編寫(xiě)簡(jiǎn)單。

AJAX分頁(yè),是透過(guò)前端非同步請(qǐng)求數(shù)據(jù),透過(guò)Ajax技術(shù)將資料傳遞到伺服器端,伺服器端從資料庫(kù)取得資料後,將資料傳回前端。這種方式資料互動(dòng)效率高,但是需要使用較為複雜的前端技術(shù)。

二、ThinkPHP分頁(yè)的使用方法

具體來(lái)說(shuō),ThinkPHP中的分頁(yè)使用,主要包括兩個(gè)模組:Model模組和View模組。在Model模組中,我們透過(guò)使用ThinkPHP的Query類別或Db類別從資料庫(kù)中查詢到資料。在View模組中,我們透過(guò)使用ThinkPHP的分頁(yè)類Pagination,以及內(nèi)建的Paginator控件,進(jìn)行資料展示操作。

  1. 在Model模組中實(shí)作資料查詢操作

在Model模組中,我們首先需要從資料庫(kù)中查詢到數(shù)據(jù),然後根據(jù)分頁(yè)的大小來(lái)設(shè)定資料的查詢偏移量和查詢數(shù)量,只傳回所需的一頁(yè)資料。具體的操作如下:

<?php
namespace Home\Model;
use Think\Model;
class UserModel extends Model{
    public function getPageUsers($page=1,$rows=10){
        $result = array();
        $count = $this->count();?//?獲取總記錄數(shù)
????????$offset?=?($page-1)*$rows;?//?查詢的起始位置
????????$data?=?$this->limit($offset,$rows)->select();?//?查詢當(dāng)前頁(yè)的記錄
????????$pagination?=?new?\Think\Paginator($count,$rows);?//?實(shí)例化分頁(yè)對(duì)象
????????$result['rows']?=?$data;
????????$result['pagination']?=?$pagination->show();?//?獲取分頁(yè)顯示的HTML代碼
????????return?$result;
????}
}

在上述程式碼中,使用了count()方法來(lái)取得總記錄數(shù),limit()方法取得目前頁(yè)的記錄,以及Pagination類別實(shí)例化分頁(yè)物件。值得注意的是,limit()方法支援鍊式操作,可以使用where()方法配合,實(shí)作更為複雜的查詢操作。

  1. 在View模組中實(shí)作資料展示操作

在View模組中,我們需要使用ThinkPHP內(nèi)建的Paginator控制項(xiàng)來(lái)顯示分頁(yè)訊息,以及使用ThinkPHP的分頁(yè)類Pagination來(lái)生成分頁(yè)HTML代碼。具體操作如下:

<!DOCTYPE html>
<html>
<head>
????<meta charset="UTF-8">
????<title>用戶信息管理</title>
????<link rel="stylesheet" type="text/css" href="__PUBLIC__/bootstrap/css/bootstrap.min.css">
</head>
<body>
<div class="container">
????<div class="panel panel-default">
????????<div class="panel-heading">用戶信息管理</div>
????????<div class="panel-body">
????????????<table class="table table-striped">
????????????????<thead>
????????????????<tr>
????????????????????<th>ID</th>
????????????????????<th>用戶名</th>
????????????????????<th>年齡</th>
????????????????????<th>電話</th>
????????????????????<th>郵箱</th>
????????????????</tr>
????????????????</thead>
????????????????<tbody>
????????????????<?php foreach($users[&#39;rows&#39;] as $user):?>
????????????????<tr>
????????????????????<td><?php echo $user[&#39;id&#39;];?></td>
????????????????????<td><?php echo $user[&#39;name&#39;];?></td>
????????????????????<td><?php echo $user[&#39;age&#39;];?></td>
????????????????????<td><?php echo $user[&#39;phone&#39;];?></td>
????????????????????<td><?php echo $user[&#39;email&#39;];?></td>
????????????????</tr>
????????????????<?php endforeach;?>
????????????????</tbody>
????????????</table>
????????????<nav aria-label="Page navigation">
????????????????<?php echo $users[&#39;pagination&#39;];?>
????????????</nav>
????????</div>
????</div>
</div>
</body>
</html>

在上面的程式碼中,我們主要使用了Paginator控制項(xiàng)和Pagination類別。在Paginator控制項(xiàng)中,我們可以設(shè)定控制項(xiàng)的佈局、樣式等。在Pagination類別中,我們呼叫了show()方法來(lái)取得分頁(yè)的HTML程式碼,供Paginator控制項(xiàng)使用。同時(shí)在foreach循環(huán)中,我們將從Model層傳輸過(guò)來(lái)的$rows數(shù)組展示到了表格中。

三、ThinkPHP分頁(yè)的常見(jiàn)問(wèn)題

  1. 怎麼設(shè)定每頁(yè)顯示的記錄數(shù)?

在Model層的getPageUsers方法中,我們可以設(shè)定預(yù)設(shè)的每頁(yè)記錄數(shù),如下:

public?function?getPageUsers($page=1,$rows=10){
????...
}

其中,$rows表示預(yù)設(shè)每頁(yè)記錄數(shù),我們也可以在View層直接傳入?yún)?shù)來(lái)改變每頁(yè)記錄數(shù)。

  1. 如何顯示第一頁(yè)?

在View層中,當(dāng)使用者點(diǎn)選第一頁(yè)時(shí),$page參數(shù)的值為1,我們需要相應(yīng)地改變資料的查詢範(fàn)圍。具體操作如下:

public?function?getPageUsers($page=1,$rows=10){
????$result?=?array();
????$count?=?$this->count();?//?獲取總記錄數(shù)
????$offset?=?($page-1)*$rows;?//?查詢的起始位置
????$data?=?$this->limit($offset,$rows)->select();?//?查詢當(dāng)前頁(yè)的記錄
????
????//?如果是第一頁(yè),直接返回第一頁(yè)的數(shù)據(jù)
????if($page?==?1){
????????$pagination?=?new?\Think\Paginator($count,$rows);
????????$result['rows']?=?$data;
????????$result['pagination']?=?$pagination->show();
????????return?$result;
????}
????
????//?如果不是第一頁(yè),則查詢第一頁(yè)的數(shù)據(jù),獲取分頁(yè)HTML代碼
????$firstPageData?=?$this->limit(0,$rows)->select();
????$pagination?=?new?\Think\Paginator($count,$rows);
????$result['rows']?=?$data;
????$result['pagination']?=?str_replace("1</a>",$firstPageData."</a>",$pagination->show());
????return?$result;
}

在上面的程式碼中,當(dāng)$page等於1時(shí),我們直接傳回第一頁(yè)的資料。當(dāng)$page大於1時(shí),我們重新查詢第一頁(yè)數(shù)據(jù),取得分頁(yè)HTML程式碼,並將其替換到目前頁(yè)的「第一頁(yè)」。這樣就可以實(shí)現(xiàn)在任一頁(yè)點(diǎn)選「第一頁(yè)」按鈕,都可以傳回第一頁(yè)資料。

  1. 怎麼樣使用AJAX分頁(yè)?

對(duì)於普通分頁(yè),每次翻頁(yè)都需要重新要求整個(gè)頁(yè)面,這對(duì)於大型資料集顯然是低效的,所以我們常常使用AJAX技術(shù)來(lái)實(shí)現(xiàn)無(wú)刷新分頁(yè)。

使用AJAX分頁(yè)需要注意以下幾點(diǎn):

(1)在View層中,需要加入類似上方的jQuery程式碼,來(lái)監(jiān)聽(tīng)分頁(yè)按鈕:

$(function?()?{?//?加載頁(yè)面時(shí),注冊(cè)分頁(yè)事件
????$("#page").on('click','a',function(){
????????var?url?=?$(this).attr('href');
????????$("#table").load(url);
????????return?false;
????});
});

在上面的程式碼中,我們?cè)诜猪?yè)按鈕上新增了一個(gè)click事件監(jiān)聽(tīng)器,點(diǎn)擊按鈕的時(shí)候,發(fā)送一個(gè)AJAX請(qǐng)求,將資料放回填入對(duì)應(yīng)的位置。

(2)在Model層中,需要在getPageUsers方法中傳回JSON格式的數(shù)據(jù),如下:

public?function?getPageUsers($page=1,$rows=10){
????...
????$result?=?array();
????$pagination?=?new?\Think\Paginator($count,$rows);
????$result['rows']?=?$data;
????$result['pagination']?=?$pagination->show();
????return?json_encode($result);
}

這裡使用了json_encode()函數(shù)來(lái)將資料格式化為JSON格式傳回。這樣在View層就可以很方便解析資料。

以上是thinkphp如何實(shí)作分頁(yè)的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話題

Laravel 教程
1600
29
PHP教程
1502
276