Heim  >  Artikel  >  PHP-Framework  >  So implementieren Sie Paging in thinkphp

So implementieren Sie Paging in thinkphp

PHPz
PHPzOriginal
2023-04-11 10:42:561901Durchsuche

ThinkPHP ist ein PHP-Framework, das auf dem MVC-Entwicklungsmodell basiert. Da wir MVC-Anwendungen entwickeln, ist die Paging-Funktion unverzichtbar. Wie implementiert ThinkPHP Paging? Lassen Sie mich Ihnen vorstellen, wie ThinkPHP Paging implementiert.

1. Das Grundkonzept von ThinkPHP Paging

Paging besteht darin, eine große Datensammlung in N Seiten aufzuteilen, sodass Benutzer nur einen Teil davon anzeigen können. In ThinkPHP gibt es zwei Arten von Paging: das normale Paging und das AJAX-Paging.

Normales Paging bedeutet, dass jede Seite die gesamte Seite aktualisieren muss. Die Daten werden vom Server über PHP-Code abgerufen und dann an den Client zurückgegeben. Diese Methode der Dateninteraktion ist ineffizient, aber einfach zu schreiben.

AJAX-Paging besteht darin, Daten asynchron über das Front-End anzufordern und die Daten über die Ajax-Technologie an den Server zu übertragen. Nachdem die Serverseite die Daten aus der Datenbank abgerufen hat, gibt sie die Daten an das Front-End zurück. Diese Methode der Dateninteraktion ist hocheffizient, erfordert jedoch den Einsatz komplexerer Front-End-Technologie.

2. So verwenden Sie Paging in ThinkPHP

Konkret umfasst die Verwendung von Paging in ThinkPHP hauptsächlich zwei Module: Modellmodul und Ansichtsmodul. Im Modellmodul fragen wir Daten aus der Datenbank ab, indem wir die Query-Klasse oder die Db-Klasse von ThinkPHP verwenden. Im View-Modul führen wir Datenanzeigevorgänge durch, indem wir die Paging-Klasse Pagination von ThinkPHP und das integrierte Paginator-Steuerelement verwenden.

  1. Implementieren Sie Datenabfragevorgänge im Modellmodul.

Im Modellmodul müssen wir zunächst die Daten aus der Datenbank abfragen und dann den Abfrageoffset und die Abfragemenge der Daten entsprechend der Paging-Größe festlegen. und geben Sie nur die erforderliche Datenseite zurück. Die spezifischen Operationen sind wie folgt:

<?php
namespace Home\Model;
use Think\Model;
class UserModel extends Model{
    public function getPageUsers($page=1,$rows=10){
        $result = array();
        $count = $this->count(); // 获取总记录数
        $offset = ($page-1)*$rows; // 查询的起始位置
        $data = $this->limit($offset,$rows)->select(); // 查询当前页的记录
        $pagination = new \Think\Paginator($count,$rows); // 实例化分页对象
        $result['rows'] = $data;
        $result['pagination'] = $pagination->show(); // 获取分页显示的HTML代码
        return $result;
    }
}

Im obigen Code wird die count()-Methode verwendet, um die Gesamtzahl der Datensätze zu erhalten, die limit()-Methode wird verwendet, um die Datensätze der aktuellen Seite zu erhalten, und die Paginierungsklasse wird verwendet, um das Paging-Objekt zu instanziieren. Es ist erwähnenswert, dass die limit()-Methode Kettenoperationen unterstützt und in Verbindung mit der where()-Methode verwendet werden kann, um komplexere Abfrageoperationen zu implementieren.

  1. Implementieren Sie Datenanzeigevorgänge im Ansichtsmodul.

Im Ansichtsmodul müssen wir das integrierte Paginator-Steuerelement von ThinkPHP verwenden, um Paginierungsinformationen anzuzeigen, und die Paging-Klasse Pagination von ThinkPHP verwenden, um Paging-HTML-Code zu generieren. Die spezifischen Operationen sind wie folgt:

<!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>

Im obigen Code verwenden wir hauptsächlich das Paginator-Steuerelement und die Paginierungsklasse. Im Paginator-Steuerelement können wir das Layout, den Stil usw. des Steuerelements festlegen. In der Pagination-Klasse haben wir die Methode show() aufgerufen, um den Paginierungs-HTML-Code zur Verwendung durch das Paginator-Steuerelement abzurufen. Gleichzeitig zeigen wir in der foreach-Schleife das Array $rows an, das von der Modellebene in die Tabelle übertragen wurde.

3. Häufig gestellte Fragen zum ThinkPHP-Paging

  1. Wie stelle ich die Anzahl der auf jeder Seite angezeigten Datensätze ein?

In der getPageUsers-Methode der Modellebene können wir die Standardanzahl von Datensätzen pro Seite wie folgt festlegen:

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

Unter diesen stellt $rows die Standardanzahl von Datensätzen pro Seite dar. Wir können auch direkt Parameter übergeben in der Ansichtsebene, um die Anzahl der Datensätze pro Seite zu ändern.

  1. Wie zeige ich die erste Seite an?

Wenn der Benutzer in der Ansichtsebene auf die erste Seite klickt, ist der Wert des $page-Parameters 1 und wir müssen den Abfragebereich der Daten entsprechend ändern. Die spezifische Operation lautet wie folgt:

public function getPageUsers($page=1,$rows=10){
    $result = array();
    $count = $this->count(); // 获取总记录数
    $offset = ($page-1)*$rows; // 查询的起始位置
    $data = $this->limit($offset,$rows)->select(); // 查询当前页的记录
    
    // 如果是第一页,直接返回第一页的数据
    if($page == 1){
        $pagination = new \Think\Paginator($count,$rows);
        $result['rows'] = $data;
        $result['pagination'] = $pagination->show();
        return $result;
    }
    
    // 如果不是第一页,则查询第一页的数据,获取分页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;
}

Wenn im obigen Code $page gleich 1 ist, geben wir direkt die Daten der ersten Seite zurück. Wenn $page größer als 1 ist, fragen wir die Daten der ersten Seite erneut ab, rufen den Paging-HTML-Code ab und ersetzen ihn in der „ersten Seite“ der aktuellen Seite. Auf diese Weise können Sie auf jeder Seite auf die Schaltfläche „Erste Seite“ klicken, um zur ersten Datenseite zurückzukehren.

  1. Wie verwende ich die AJAX-Paginierung?

Beim normalen Paging muss bei jedem Umblättern die gesamte Seite erneut angefordert werden, was bei großen Datensätzen offensichtlich ineffizient ist. Daher verwenden wir häufig die AJAX-Technologie, um ein aktualisierungsfreies Paging zu erreichen.

Bei der Verwendung von AJAX-Paging müssen Sie die folgenden Punkte beachten:

(1) In der Ansichtsebene müssen Sie einen jQuery-Code ähnlich dem oben genannten hinzufügen, um die Paging-Schaltfläche zu überwachen:

$(function () { // 加载页面时,注册分页事件
    $("#page").on('click','a',function(){
        var url = $(this).attr('href');
        $("#table").load(url);
        return false;
    });
});

Im obigen Code Wir fügen auf der Paging-Schaltfläche einen Click-Event-Listener hinzu. Wenn auf die Schaltfläche geklickt wird, wird eine AJAX-Anfrage gesendet, um die Daten wieder an die entsprechende Position zu füllen.

(2) In der Modellebene müssen die Daten im JSON-Format in der getPageUsers-Methode wie folgt zurückgegeben werden:

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);
}

Die Funktion json_encode() wird hier verwendet, um die Daten zu formatieren und im JSON-Format zurückzugeben. Auf diese Weise können Daten in der Ansichtsebene einfach analysiert werden.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie Paging in thinkphp. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn