Heim  >  Artikel  >  php教程  >  Detaillierte Erläuterung des PHP-Paging-Prinzips

Detaillierte Erläuterung des PHP-Paging-Prinzips

黄舟
黄舟Original
2016-12-14 13:26:241085Durchsuche

Als Webprogramm muss es oft mit unzähligen Daten wie Mitgliederdaten und Artikeldaten umgehen. Wenn es nur ein paar Dutzend Mitglieder gibt, ist es einfach, es auf einer Seite anzuzeigen, aber wenn Wenn Ihre Website Tausende oder sogar Hunderttausende Mitglieder hat und diese alle auf einer Seite geöffnet werden, ist es sowohl für den Browser als auch für den Betrachter eine Qual. Darüber hinaus ist es eine Qual, die Daten einmalig abzufragen, wenn es sich um Hunderte von Millionen handelt Die Datenbank wird den Server stark belasten. Ja, 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 .

Wählen Sie * aus der Tabellengrenze 0,10

Das Obige ist eine sehr einfache MySQL-Abfrageanweisung. Ihre Funktion besteht darin, 10 Daten aus einer Tabelle mit dem Namen „table“ zu extrahieren und alle Werte einzufügen ​der Felder werden erhalten. Die Verwendung des Limits 0,10 ist: Startpunkt begrenzen, die zu extrahierende Menge

Der Schlüsselteil in diesem Absatz ist „Limit 0,10“, wobei 0 der Startpunkt ist und 10 dann Anzeigen bedeutet 10 Datenelemente, also 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 //Erste Seite
Limit 10,10 //Seite 2
Limit 20,10 //Seite 3
Limit 30,10 //Seite 4
...
Siehe das Muster bereits ? 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]

/*

Autor: Silently
Datum:2006-12-03

*/

$page=isset($_GET['page'])?intval($_GET['page' ]):1; //Dieser Satz soll den Wert der Seite in page=18 abrufen. Wenn die Seite nicht vorhanden ist, ist die Seitenzahl 1.
$num=10; //10 Daten pro Seite anzeigen

$db=mysql_connect("host","name","pass"); //Eine Datenbankverbindung erstellen
$select =mysql_select_db("db",$db); //Wählen Sie die zu betreibende Datenbank aus

/*
Zuerst müssen wir ermitteln, wie viele Daten in der Datenbank vorhanden sind in wie viele Seiten es unterteilt werden muss und wie viele Seiten insgesamt sind. Die spezifische Formel zum Zählen besteht darin,
die Gesamtzahl der Daten durch die Anzahl der auf jeder Seite angezeigten Elemente zu dividieren und den Rest auf eins zu runden.
Das heißt, 10/3=3,3333=4 Wenn ein Rest übrig bleibt, müssen wir ihn um eins aufrunden.
*/

$total=mysql_num_rows(mysql_query("select * from table")); //Die Gesamtzahl der Abfragedaten insgesamt
$pagenum=ceil($total/$num) ; / /Erhalten Sie die Gesamtseitenzahl pagenum

//Wenn der eingehende Seitenzahlparameter apge größer als die Gesamtseitenzahl pagenum ist, wird eine Fehlermeldung angezeigt
If($page>$pagenum | |. $page == 0) {
Echo „Fehler: Die Seite konnte nicht gefunden werden.“;
Beenden;
}

$offset=($page-1)*$num ; //Grenzwertnummer abrufen Der Wertoffset eines Parameters. Wenn die erste Seite (1-1)*10=0 ist, ist die zweite Seite (2-1)*10=10. (Anzahl der übergebenen Seiten - 1) * Die Daten jeder Seite erhalten den Wert des ersten Parameters von limit

$info=mysql_query("select * from table limit $offset,$num "); /Get Die Daten, die auf der entsprechenden Seite angezeigt werden müssen
While($it=mysql_fetch_array($info)){
Echo $it['name']."
";
} // Daten anzeigen

For($i=1;$i<=$pagenum;$i++){

$show=($i!=$page)?" $i":"$i";
Echo $show." ";
}

/*Seiteninformationen anzeigen. Wenn es sich um die aktuelle Seite handelt, werden fettgedruckte Zahlen angezeigt. Die übrigen Seitenzahlen sind Hyperlinks. Wenn es sich um die dritte Seite handelt, wird sie als angezeigt folgt
1 2 3 4 5 6
*/
?>
[/php]
Wenn Sie den obigen Code sorgfältig lesen und die Datenbankverbindungs- und Abfragetabellen durch Ihre ersetzen, werden Sie kann es sehen Ausführungseffekt.

Ist es nicht ganz einfach? Verwenden Sie einfach Ihr Gehirn, um die Anzeige personalisierter zu gestalten: Wie implementiert man das Format „Startseite, Vorherige Seite, Nächste Seite, Letzte Seite“? Was ist mit Paging?

Okay, füllen Sie die Wassersäule zu Ende und machen Sie Feierabend. ^_^ Sprechen Sie im Stillen über PHP- und MYSQL-Paging-Prinzipien und -Implementierung = =
Zusammenfassung:

Prototyp: Wählen Sie * aus Tabellenlimit 0,10

Programm: Wählen Sie * aus Tabellenlimit $offset,$num ($offset-Wert ist: die Anzahl der übergebenen Seiten- 1 $ num sind die auf jeder Seite angezeigten Daten, meist feste konstante Werte)

Gesamtanzahl der Seiten: % der Gesamtdaten Die Anzahl der auf jeder Seite angezeigten Elemente, mit Rest

int totalPage=(( totalCount%NUM )==0)?totalCount/NUM:totalCount/NUM+1;

Verwendung begrenzen: Startpunkt und zu extrahierende Zahl begrenzen

Aber bitte beachten: unbedingt beachten Fügen Sie die Reihenfolge hinzu und 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;

Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (www.php .cn) !

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