Heim > Datenbank > MySQL-Tutorial > Wie generiert man dynamisch Paginierungslinks in MySQL mit LIMIT und OFFSET?

Wie generiert man dynamisch Paginierungslinks in MySQL mit LIMIT und OFFSET?

Linda Hamilton
Freigeben: 2024-12-05 15:17:10
Original
866 Leute haben es durchsucht

How to Dynamically Generate Pagination Links in MySQL Using LIMIT and OFFSET?

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
Nach dem Login kopieren

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);
Nach dem Login kopieren

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>';
  }
}
Nach dem Login kopieren

Ü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>';
  }
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage