Bevor Sie diesen Artikel lesen, stellen Sie bitte sicher, dass Sie über PHP-Kenntnisse und die Grundlagen von MYSQL-Abfragevorgängen verfügen.
Als Webprogramm muss es oft mit unzähligen Daten wie Mitgliederdaten und Artikeldaten umgehen. Wenn es nur ein paar Dutzend Mitglieder gibt, kann es problemlos auf einer Seite angezeigt werden Was aber, wenn Ihre Website Tausende oder sogar Hunderttausende Mitglieder hat und diese alle auf einer Seite geöffnet werden, wird es sowohl für den Browser als auch für den Betrachter eine Tortur sein, wenn es Hunderte Millionen Daten gibt. Eine einmalige Abfrage aus der Datenbank wird den Server belasten. Das ist eine große Sache, das ist nicht der richtige Weg.
Ich glaube, dass jeder Anfänger, der PHP lernt, Kopfschmerzen mit der Paginierung haben wird, aber bei Momos Beitrag werden Sie sich bestimmt über den Kopf klopfen und sagen: „Hey, es stellt sich heraus, dass Paginierung so einfach ist?“ In der Tat, atmen Sie jetzt bitte tief die frische Luft ein und hören Sie aufmerksam zu, während Silence es Ihnen Stück für Stück erklärt.
Angenommen, wir möchten 1000 Daten verarbeiten und 10 Daten auf jeder Seite anzeigen. In diesem Fall werden sie auf 100 Seiten angezeigt. Schauen wir uns zunächst an, wie 10 Daten in MySQL extrahiert werden .
Select * from table limit 0,10
Das Obige ist eine sehr einfache MySQL-Abfrageanweisung. Ihre Funktion besteht darin, 10 Daten aus einer Tabelle mit dem Namen Tabelle zu extrahieren und die Werte aller Felder zu erhalten. Die Verwendung des Limits 0,10 ist: Limit-Startpunkt, die zu extrahierende Menge
Der Schlüsselteil in diesem Absatz ist „Limit 0,10“, wobei 0 der Startpunkt und dann 10 ist Zeigt 10 Datenelemente an, daher müssen wir 10 als Ausgangspunkt verwenden. Wie schreibt man das 20. Datenelement?
Vielleicht sagen viele Leute direkt „Limit 10,20“! Oh, das ist falsch. Der Parameter danach ist nicht der Endpunkt, sondern die zu extrahierende Zahl.
Da Sie nun wissen, wie man 10 Datenstücke extrahiert, bedeutet das Extrahieren von 1.000 Teilen, dass diese Art von Abfrage 100 Mal durchgeführt wird, was bedeutet, dass Sie die folgende Abfrage durchführen müssen:
Limit 0,10 . Seite
Limit 10,10 Ja, der erste Parameter erhöht sich bei jedem Umblättern um 10, der zweite Parameter bleibt jedoch unverändert.
Das heißt, wenn wir versuchen, den Wert des ersten Parameters entsprechend der Anzahl der Seiten zu ändern, können wir die Daten in Seiten anzeigen. Ist das Prinzip sehr einfach?
Aber wie ändert man den Wert des ersten Parameters entsprechend der Anzahl der Seiten? Zunächst benötigen wir einen Seitenzahlwert, der mit der GET-Methode der URL abgerufen werden kann.
Zum Beispiel index.php?page=18
Ich glaube, die meisten von Ihnen sind mit dieser Art von URL-Adresse vertraut. Die Funktion des Seitenparameters besteht darin, die Nummer zu übergeben welche Seiten angezeigt werden sollen.
Sehen wir uns an, wie es durch einen Code implementiert wird:
<?php /* Author:默默 Date :2006-12-03 */ $page=isset($_GET['page'])?intval($_GET['page']):1; //这句就是获取page=18中的page的值,假如不存在page,那么页数就是1。 $num=10; //每页显示10条数据 $db=mysql_connect("host","name","pass"); //创建数据库连接 $select=mysql_select_db("db",$db); //选择要操作的数据库 /* 首先咱们要获取数据库中到底有多少数据,才能判断具体要分多少页,总页数 具体的公式就是 总数据数 除以 每页显示的条数,有余进一 。 也就是说10/3=3.3333=4 有余数就要进一。 */ $total=mysql_num_rows(mysql_query("select * from table")); //查询数据的总数total $pagenum=ceil($total/$num); //获得总页数 pagenum //假如传入的页数参数apge 大于总页数 pagenum,则显示错误信息 If($page>$pagenum || $page == 0){ Echo "Error : Can Not Found The page ."; Exit; } $offset=($page-1)*$num; //获取limit的第一个参数的值 offset ,假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。 (传入的页数-1) * 每页的数据 得到limit第一个参数的值 $info=mysql_query("select * from table limit $offset,$num "); //获取相应页数所需要显示的数据 While($it=mysql_fetch_array($info)){ Echo $it['name']."<br />"; } //显示数据 For($i=1;$i<=$pagenum;$i++){ $show=($i!=$page)?"<a href='index.php?page=".$i."'>$i</a>":"<b>$i</b>"; Echo $show." "; } /*显示分页信息,假如是当页则显示粗体的数字,其余的页数则为超连接,假如当前为第三页则显示如下 1 2 3 4 5 6 */ ?>
Programm: Wählen Sie * aus Tabellenlimit $offset,$num ($offset-Wert ist: Passnummer der eingegebenen Seiten - 1 $num sind die auf jeder Seite angezeigten Daten, meist ein fester konstanter Wert) Gesamtzahl der Seiten: % der Gesamtdaten Anzahl der auf jeder Seite angezeigten Elemente, mehr als eins int totalPage= ( (totalCount%NUM)==0)?totalCount/NUM:totalCount/NUM+1;
Verwendung begrenzen: Startpunkt und zu extrahierende Zahl begrenzen
Aber es sollte beachtet werden: muss sein Reihenfolge hinzugefügt: Stellen Sie sicher, dass die Abfrage in aufsteigender oder absteigender Reihenfolge erfolgt. Andernfalls wissen Sie bei der Abfrage nicht, in welche Richtung Sie mit der Abfrage beginnen sollen. Achten Sie aber unbedingt auf die Reihenfolge: Die richtige ist select * from user order by id desc limit 0,10;
Ausführlichere Erläuterungen zu PHP-Paging-Prinzipien und verwandte Artikel finden Sie in der PHP chinesische Website!
Verwandte Artikel:
Verwendung von PHP zur Implementierung einfacher Paging-Klassen und deren detaillierte VerwendungsmethodenPHP-Paging Detaillierte Erklärung zur Produktion von PHP-Paging-Anzeigen