Paginierung mit MySQL LIMIT, OFFSET: Dynamische Seitenerstellung
Paginierung ermöglicht Benutzern das Navigieren in großen Datensätzen, indem eine begrenzte Anzahl von Elementen pro Seite angezeigt wird . Durch die Verwendung der MySQL-Klauseln LIMIT und OFFSET können wir bestimmte Datenseiten effizient abrufen.
Es ist jedoch ineffizient, für jede potenzielle Seitennummer eine separate Seite zu erstellen. Stattdessen können wir die Anzahl der Seiten dynamisch basierend auf der Gesamtzahl der Zeilen in der Datenbank bestimmen.
Bestimmen der Anzahl der Seiten
Um die Gesamtzahl zu ermitteln Seiten müssen wir zunächst die Gesamtzahl der Zeilen in der Tabelle mithilfe einer separaten Abfrage berechnen.
SELECT COUNT(*) FROM menuitem
Dadurch wird eine einzelne Zeile mit einer Spalte zurückgegeben, die die Gesamtzahl enthält Zeilenanzahl.
Berechnen der Seitenanzahl
Wir können dann die Gesamtzahl der Seiten berechnen, indem wir die Gesamtzahl der Zeilen durch die gewünschten Elemente pro Seite dividieren und auf die nächste Zahl aufrunden Ganzzahl.
$page_count = (int)ceil($row_count / $items_per_page);
Anpassung für ungültige Seite Anfragen
Wenn ein Benutzer eine Seite anfordert, die nicht existiert (z. B. Seite 5, wenn es nur 3 gibt), können wir ihn je nach Situation auf die letzte oder die erste Seite umleiten .
Seitenlinks ausgeben
Sobald wir die Gesamtzahl der Seiten kennen, können wir eine Seitenliste erstellen Links. Für die aktuelle Seite zeigen wir sie als Text an, während wir für andere Seiten Links zu ihnen erstellen.
for ($i = 1; $i <= $page_count; $i++) { if ($i === $page) { // current page echo 'Page ' . $i . '<br>'; } else { // link to other page echo '<a href="/menuitem.php?page=' . $i . '">Page ' . $i . '</a><br>'; } }
Überarbeiteter Code
Verwendung der dynamischen Seitenberechnung Methode könnte Ihr überarbeiteter Code etwa so aussehen:
// Get page number from URL $page = 1; if (!empty($_GET['page'])) { $page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT); if (false === $page) { $page = 1; } } // Get total row count $sql = "SELECT COUNT(*) FROM menuitem"; $result = mysqli_query($con, $sql); $row_count = mysqli_num_rows($result); mysqli_free_result($result); // Calculate page count $page_count = (int)ceil($row_count / $items_per_page); // Double check page is in range if ($page > $page_count) { $page = 1; } // Calculate offset $offset = ($page - 1) * $items_per_page; // Select limited data $sql = "SELECT * FROM menuitem LIMIT " . $offset . "," . $items_per_page; $result = mysqli_query($con, $sql); // ... (Rest of your code) ... // Output page links for ($i = 1; $i <= $page_count; $i++) { if ($i === $page) { echo 'Page ' . $i . '<br>'; } else { echo '<a href="/menuitem.php?page=' . $i . '">Page ' . $i . '</a><br>'; } }
Mit diesem Code können Sie Seiten basierend auf der Anzahl der Zeilen in der Datenbank dynamisch erstellen. Dadurch entfällt die Notwendigkeit fest codierter Seitenzahlen und Offsets.
Das obige ist der detaillierte Inhalt vonWie generiert man dynamisch Paginierungslinks in MySQL mit LIMIT und OFFSET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!