Wie man Daten mit PHP paginiert

Wenn Sie möchten, dass die Datenbank den Inhalt in Seiten aufteilt , ist dies Ihr Lernprogramm. Heute werden wir sehen, wie man in PHP paginiert . Paginierung ist der Prozess, eine Reihe von Ergebnissen zu erfassen und diese entlang der Seiten zu erweitern, damit die Ergebnisse besser lesbar sind und wir sie angemessen präsentieren können.

In diesem Beispiel habe ich eine Tabelle mit dem Namen locate in der Datenbank erstellt, die 4 Spalten enthält:

  • id
  • Land
  • Hauptstadt
  • Kontinent

Als nächstes lege ich das Bild der Tabelle:

paginacion-PHP-1.jpg

Der Inhalt davon wird der folgende sein:

paginacion-PHP-2.jpg

Wir werden ein Web mit einer Tabelle erstellen, die die Ergebnisse von 5 in 5 anzeigt. Wir werden Bootstrap dabei helfen, einige kleine Stile zu erstellen, und einige Balken einfügen, um durch die Ergebnisseiten zu navigieren. Dies kann jedoch auch manuell erfolgen Dies ist nicht der wichtige Teil des Codes.

Der Code ist ziemlich kurz und einfach, es wird eine PHP-Klasse und eine HTML-Seite sein, fangen wir an.

PHP-Code

Zuerst geben wir den Code ein, dann erklären wir ihn kurz.

 <? php klasse Paginar { private $ verbindung; private $ limit = 5; private $ page; private $ query; Privat $ total; public function __construct ($ conex, $ cons) { $ this-> connection = $ connect; $ this-> query = $ cons; $ answer = $ this-> connection-> query ($ this-> query); $ this-> total = $ answer-> num_rows; } öffentliche Funktion getData ($ p) { $ this-> page = $ p; $ home = ($ this-> page - 1) * $ this-> limit; if ($ start <0) { $ start = 0; $ this-> page = 1; } if ($ home> ($ this-> total- $ this-> limit)) { $ start = $ this-> total- $ this-> limit; $ this-> page = $ this-> page-1; } $ consult = $ this-> query. ' limit '. $ start.', '. $ this-> limit; $ answer = $ this-> connection-> query ($ consult); while ($ row = $ answer-> fetch_assoc ()) $ results [] = $ row; $ result = new stdclass (); $ result-> page = $ this-> page; $ result-> limit = $ this-> limit; $ result-> total = $ this-> total; $ result-> data = $ results; return $ result; } öffentliche Funktion createLinks ($ links) { $ last = ceil ($ this-> total / $ this-> limit); $ start = (($ this-> page - $ links)> 0)? $ this-> pagina- $ links: 1; $ end = (($ this-> page + $ links) <$ last)? $ this-> page + $ links: $ last; $ class = ($ this-> page == 1)? "disabled": ""; $ html = '<li class = "'. $ class. '"> <a href="?limit='.$this-> limit.' & page = '. ($ this-> page-1).' " > & laquo; </a> </ li> '; if ($ start> 1) { $ html. = '<li> <a href="?limit='.$this-> limit.' & page = 1 "> 1 </a> </ li> '; $ html. = '<li class = "disabled"> <span> ... </ span> </ li>'; } für ($ i = $ start; $ i <= $ end; $ i ++) { $ class = ($ this-> page == $ i)? "active": ""; $ html. = '<li class = "'. $ class. '"> <a href="?limit='.$this-> limit.' & page = '. $ i.' "> '. $ i. '</a> </ li>'; } if ($ end <$ last) { $ html. = '<li class = "disabled"> <span> ... </ span> </ li>'; $ html. = '<li> <a href="?limit='.$this-> limit.' & page = '. $ last.' "> '. $ last.' </a> </ li> ' ; } $ class = ($ this-> page == $ last)? "disabled": "enabled"; $ html. = '<li class = "'. $ class. '"> <a href="?limit='.$this-> limit.' & page = '. ($ this-> page + 1)' "> & raquo; </a> </ li> '; return $ html; } } ?> 

In diesem Code haben wir einen Konstruktor und 2 Funktionen. se realiza la primera consulta y obtenemos el número de filas de datos que hay en la BD. Im Konstruktor wird die erste Abfrage durchgeführt und die Anzahl der Datenzeilen in der Datenbank ermittelt.

Hinweis
In einer realen Anwendung müssten Sie die entsprechenden Prüfungen durchführen. Um den Code nicht zu komplizieren, wurden sie hier weggelassen.

es la encargada de hacer las consultas a la BD, cómo puedes ver lo hará con un límite y desde una posición inicial, una sentencia de ejemplo: Die Funktion getDatos ist dafür zuständig, Anfragen an die BD zu richten , wie kann man es mit einem Limit und von einer Anfangsposition aus, einem Beispielsatz, sehen:

 SELECT * FROM finde LIMIT 10, 5 

Was uns zurückgibt, sind 5 Zeilen der Tabelle von 10, das heißt, es werden die Zeilen 11, 12, 13, 14 und 15 zurückgegeben (wenn es nicht 5 Elemente gibt, werden so weit wie möglich zurückgegeben).

See also  So erstellen und senden Sie Formulare mit Ajax

se encargará de crear los números de paginación que puedes ver en la siguiente imagen por encima y debajo de la tabla (existen 2 tipos, simplemente para que puedas elegir, son estilos de Bootstrap): Schließlich erstellt die Funktion createLinks die Seitenzahlen, die Sie in der folgenden Abbildung über und unter der Tabelle sehen können (es gibt zwei Typen, damit Sie auswählen können, ob es sich um Bootstrap-Stile handelt):

paginacion-PHP-3.jpg

Die Zahlen entsprechen der Gesamtzahl der Seiten am Anfang und Ende dieser Liste (<<, >>). Dies sind die Pfeile, mit denen wir vor- und zurückblättern können.

HTML-Code

Mal sehen, wie einfach der HTML-Code ist.

 <? php require_once 'Paginar.php'; $ connection = new mysqli ('127.0.0.1', 'root', '', 'TechnoWikis'); $ connection-> query ("SET NAMES 'utf8'"); $ pagina = (isset ($ _GET ['page']))? $ _GET ['page']: 1; $ links = (isset ($ _GET ['links']))? $ _GET ['links']: 5; $ query = "SELECT * FROM locate"; $ page = neue Seite ($ connection, $ query); $ results = $ page-> getData ($ page); ?> <head> <title> Paginierung in PHP </ title> <link rel = "stylesheet" href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" Integrität = "sha384-1q8mTJOASx8j1Au + a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin = "anonym"> <meta http-equiv = "Inhaltstyp" content = "text / html; charset = utf-8" /> </ head> <body> <div class = "container"> <div class = "col-md-12"> <h1 style = "text-align: center"> PHP-Seitentest </ h1> <ul class = "pager"> <? php echo $ paginar-> createLinks ($ links); ?> </ ul> <table class = "table table-hover table-condensed table-bordered"> <Thead> <tr style = "background: # 337ab7; color: white;"> <th width = "30%"> Land </ th> <th width = "30%"> Kapital </ th> <th width = "30%"> Kontinent </ th> </ tr> </ thead> <tbody> <? php for ($ i = 0; $ i <count ($ results-> data); $ i ++):?> <tr> <td> <? php echo $ results-> data [$ i] ['Country']; ?> </ td> <td> <? php echo $ results-> data [$ i] ['Capital']; ?> </ td> <td> <? php echo $ results-> data [$ i] ['Continent']; ?> </ td> </ tr> <? php endfor; ?> </ tbody> </ table> <ul class = "pagination"> <? php echo $ paginar-> createLinks ($ links); ?> </ ul> </ div> </ div> </ body> </ html> 

Es wird eine Tabelle erstellt, in der die Daten der BD gespeichert werden. Über und unter den Navigationsleisten befinden sich die zuvor beschriebenen Nummern (der einzige Unterschied besteht in der Art des angewendeten Bootstraps). Der erste Teil des Codes ist PHP, dort wird die Verbindung zur DB über die MySQLi-Bibliothek hergestellt. Das Paginate-Objekt wird erstellt (erinnern Sie sich an die zuvor gezeigte PHP-Klasse) und die erste Abfrage wird durchgeführt, die standardmäßig auf Seite 1 angefordert wird.

See also  Konfigurieren Sie DNS-Zonen in Windows Server 2012

Hier ist ein Screenshot von Seite 2 der aktuell verfügbaren 3:

paginacion-PHP-4.jpg

[color = # a9a9a9] Zum Vergrößern auf das Bild klicken [/ color]

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *