Ich erinnere mich an die Zeit vor Jahren, als ich zum ersten Mal in PHP und MySQL programmiert habe, wie aufgeregt ich war, als ich zum ersten Mal Informationen aus einer Datenbank bekam, die in einem Webbrowser angezeigt wurden.
Für jemanden, der über wenig Datenbank- und Programmierkenntnisse verfügte, wurde die Anzeige dieser Tabellenzeilen basierend auf dem von mir geschriebenen Code auf dem Bildschirm angezeigt (okay, ich habe ein Beispiel aus einem Buch kopiert - lassen Sie uns die Haare nicht spalten) - ein triumphaler Höhepunkt. Ich habe die Magie, die damals gearbeitet hat, vielleicht noch nicht vollständig verstanden, aber der erste Erfolg hat mich zu größeren und besseren Projekten inspiriert.
Während mein Überschwang über Datenbanken möglicherweise nicht mehr so ist wie früher,
Seit meiner ersten Begegnung mit PHP und MySQL bin ich begeistert
die Fähigkeit, Dinge einfach und benutzerfreundlich zu gestalten.
Als Entwickler ist ein Problem, mit dem ich ständig konfrontiert bin, es, eine große Menge von Informationen zu erfassen und die Verdaulichkeit zu erleichtern. Unabhängig davon, ob es sich um eine große Kundenliste oder um einen persönlichen MP3-Katalog handelt, kann es entmutigend sein, Reihen für Reihen auf Reihen von Daten zu sitzen
und frustrierend. Was kann ein guter Entwickler tun? Paginieren!
Wenn Sie nach einer schnellen Lösung suchen, finden Sie im Envato Market eine große Sammlung von Paginierungsskripten und Helfern.
Diese PHP-Paginierungsklasse ist wirklich nützlich. Es kann mit jeder PHP-unterstützten Datenbank-Engine implementiert werden, ist sehr einfach anzupassen und zu implementieren, unterstützt standardmäßig zwei Anzeigen, verfügt über mehrfarbige Design-Schemata und mehr.
Paginierung ist im Wesentlichen der Prozess des Erfassens von Ergebnissen und der Verbreitung
Sie werden über die Seiten hinausgeführt, um sie übersichtlicher zu gestalten.
Mir wurde früh klar, dass ich nicht nur 5000 Informationszeilen anzeigen würde
Wäre es Kopfschmerzen für jemanden, der es versuchen und lesen sollte, aber die meisten Browser würden dies hinnehmen
eine Internet-Ewigkeit (d. h. mehr als etwa fünf Sekunden), um sie anzuzeigen.
Um dies zu lösen, würde ich verschiedene SQL-Anweisungen codieren, um Datenblöcke herauszuziehen, und wenn ich es wäre
In einer guten Stimmung kann ich sogar ein paar "nächste" und "vorherige" Tasten einwerfen.
Nach einer Weile muss dieser Code in jedes ähnliche Projekt eingefügt und angepasst werden
es wurde alt geworden. Schnell. Und wie jeder gute Entwickler weiß, bringt Faulheit Erfindergeist
oder sowas ähnliches. Also setzte ich mich eines Tages zusammen und beschloss, mir ein einfaches vorzustellen,
flexible und einfach zu verwendende PHP-Klasse, für die automatisch die Drecksarbeit erledigt würde
mir.
Ein kurzes Wort über mich und PHP-Klassen. Ich bin kein objektorientierter Fan. In der Tat ich kaum
Verwenden Sie immer das Zeug. Aber nachdem Sie einige OOP-Beispiele und Tutorials gelesen haben, und einige
An einfachen Versuchs- und Irrtumsbeispielen habe ich mich entschieden, es zu drehen, und Sie wissen was?
Es funktioniert perfekt für die Paginierung. Der hier verwendete Code ist in PHP 4 geschrieben
Arbeit in PHP 5.
Muss MySQL lieben. Keine Beleidigung der anderen Datenbanksysteme da draußen, aber dafür
Ich brauche nur MySQL. Und eine großartige Funktion von MySQL ist, dass sie Ihnen einige geben
Kostenlose Beispieldatenbanken zum Spielen unter http://dev.mysql.com/doc/#sampledb.
Für meine Beispiele verwende ich die Weltdatenbank (~ 90k gezippt), die über enthält
4000 Datensätze zum Spielen, aber das Schöne an dem PHP-Skript, das wir erstellen werden, ist
dass es mit jeder Datenbank verwendet werden kann. Jetzt können wir uns alle einig sein, wenn wir uns entschieden haben
Um unsere Ergebnisse nicht zu paginieren, würde dies zu sehr langen und unhandlichen Ergebnissen führen
Ergebnisse wie folgt:
(Klicken Sie für volle Größe, lächerlich langes Bild ~ 338k)
Also lassen Sie uns unsere Daten in einfach zu verdauliche Bisse wie folgt zerlegen:
Schön ist es nicht? Sobald Sie die Paginierungsklasse in Ihren Code fallen lassen, können Sie dies tun
Verwandeln Sie schnell und einfach einen großen Datensatz in einfach zu navigierende Seiten
Nur ein paar Zeilen Code. Ja wirklich.
Dieses Beispiel besteht aus zwei Skripts, der wiederverwendbaren Paginator-Klasse und der Indexdatei, die die Tabellenelemente und Steuerelemente anzeigt.
Die Paginator-Klasse hat nur zwei Methoden und den Konstruktor. Wir werden ihn schrittweise aufbauen und jeden Schritt im weiteren Verlauf erklären.
Diese Definition legt nur die für das Paginator erforderlichen Member-Variablen fest, da dies eine Hilfsklasse ist, die nur für die Paginierung bestimmt ist. Sie setzt nur eine gültige Verbindung zum MySQL-Server und eine bereits definierte Abfrage voraus, mit der wir die für das Paginieren der Ergebnisse erforderlichen Parameter anhängen. Wir beginnen mit der Konstruktormethode.
_conn = $ conn; $ this -> _ query = $ query; $ rs = $ this -> _ conn-> query ($ this -> _ query); $ this -> _ total = $ r-> num_rows;
Ganz einfach richtig? Diese Methode legt nur die Datenbankverbindung des Objekts und die erforderliche Abfrage fest. Anschließend berechnet sie die Gesamtzahl der von dieser Abfrage abgerufenen Zeilen ohne Einschränkung oder ohne Parameter. Diese Summe ist erforderlich, um die Verknüpfungen für den Paginator zu erstellen.
Beachten Sie, dass der Einfachheit halber keine Fehlerprüfung oder andere Überprüfung der angegebenen Parameter durchgeführt wird. In einer realen Anwendung sind diese Prüfungen jedoch erforderlich.
Ergebnisse abrufen
Lassen Sie uns nun die Methode erstellen, die die Daten tatsächlich paginiert und die Ergebnisse zurückgibt.
_limit = $ limit; $ this -> _ page = $ page; if ($ this -> _ limit == 'all') $ query = $ this -> _ query; else $ query = $ this -> _-Abfrage. " GRENZE " . (($ this -> _ page - 1) * $ this -> _ limit). ", $ this -> _ limit"; $ rs = $ this -> _ conn-> query ($ query); while ($ row = $ rs-> fetch_assoc ()) $ results [] = $ row; $ result = new stdClass (); $ result-> page = $ this -> _ page; $ result-> limit = $ this -> _ limit; $ result-> total = $ this -> _ total; $ result-> data = $ results; $ Ergebnis zurückgeben;Lassen Sie uns diesen Schritt für Schritt analysieren. Zuerst legen Sie die Grenz- und Seitenparameter fest, die standardmäßig auf 10 und 1 eingestellt sind. Dann prüfen wir, ob der Benutzer eine bestimmte Anzahl von Zeilen oder alle Zeilen benötigt, basierend auf diesem und dem Seitenparameter, den wir festlegen
GRENZE
Als Parameter der Abfrage berücksichtigt die "- 1" der Seite die Tatsache, dass wir die Seiten in 1 anstelle von 0 beginnen.Danach werten wir einfach die Abfrage aus und erhalten die Ergebnisse. Schließlich erstellen wir ein neues Ergebnisobjekt, das die Grenzwert-, Seiten- und Gesamtparameter der ausgeführten Abfrage sowie die Daten für jede der abgerufenen Zeilen enthält.
Paginierungs-Links anzeigen
Nun schreiben wir die Methode, mit der die Paginierungslinks abgerufen werden.
_limit == 'all') return "; $ last = ceil ($ this -> _ total / $ this -> _ limit); $ start = (($ this -> _ page - $ links)> 0)? $ this -> _ page - $ links: 1; $ end = (($ this -> _ page + $ links) < $last ) ? $this->_page + $ links: $ last; $ html = '
Dies ist eine ziemlich lange Methode, die ungefähr 34 Zeilen Code umfasst. Lassen Sie uns nun erklären, was in dieser Methode vor sich geht.
Das ist alles, was die Paginator.class bietet. Natürlich können wir Setter und Getter für Datenbankverbindung, Limit, Seite, Abfrage und Gesamtparameter hinzufügen, aber der Einfachheit halber behalten wir es bei.
Jetzt erstellen wir die Datei, die für die Verwendung der Paginator-Klasse und die Anzeige der Daten zuständig ist. Lassen Sie mich zuerst den Basis-HTML-Code anzeigen.
PHP Pagination PHP Pagination
Stadt Land Kontinent Region