Heim > Datenbank > MySQL-Tutorial > Wie implementiert man Datenbank-Paginierung in PHP mit MySQLs LIMIT und OFFSET?

Wie implementiert man Datenbank-Paginierung in PHP mit MySQLs LIMIT und OFFSET?

Patricia Arquette
Freigeben: 2025-01-05 03:13:41
Original
273 Leute haben es durchsucht

How to Implement Database Pagination in PHP using MySQL's LIMIT and OFFSET?

Paginierung mit MySQL LIMIT, OFFSET mit Antwort

Paginierung ermöglicht die Aufteilung eines großen Datensatzes in kleinere, überschaubare Seiten, eine gängige Technik in der Webentwicklung . MySQL bietet LIMIT- und OFFSET-Klauseln zur Handhabung der Paginierung.

Problem:

Sie müssen mehrere Seiten erstellen, um Daten aus einer Datenbanktabelle mit einer vordefinierten Anzahl von Elementen pro Seite anzuzeigen Seite, aber ohne die Paginierung fest zu codieren Logik.

Lösung:

Verwenden Sie einen Paginierungsparameter in der URL, wie zum Beispiel:

http://yoursite.com/itempage.php?page=2
Nach dem Login kopieren

Sie können über auf die angeforderte Seitenzahl zugreifen $_GET['page'].

Ändern Sie Ihre SQL-Abfrage, um den Offset basierend auf der Seite dynamisch zu berechnen Zahl:

// determine page number from $_GET
$page = 1;
if(!empty($_GET['page'])) {
    $page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT);
    if(false === $page) {
        $page = 1;
    }
}

// set the number of items to display per page
$items_per_page = 4;

// build query
$offset = ($page - 1) * $items_per_page;
$sql = "SELECT * FROM menuitem LIMIT " . $offset . "," . $items_per_page;
Nach dem Login kopieren

Um die Gesamtzahl der Seiten zu ermitteln, müssen Sie die Anzahl der Zeilen in der Tabelle zählen:

$sql = "SELECT your_primary_key_field FROM menuitem";
$result = mysqli_query($con, $sql);
$row_count = mysqli_num_rows($result);
// free the result set as you don't need it anymore
mysqli_free_result($result);

$page_count = 0;
if (0 === $row_count) {  
    // maybe show some error since there is nothing in your table
} else {
   // determine page_count
   $page_count = ceil($row_count / $items_per_page);
   // double check that request page is in range
   if($page > $page_count) {
        // error to user, maybe set page to 1
        $page = 1;
   }
}
Nach dem Login kopieren

Bei der Anzeige der paginierten Daten können Sie die verwenden Variablen $page und $page_count zum Generieren geeigneter Links:

// later when outputting page, you can simply work with $page and $page_count to output links
// for example
for ($i = 1; $i <= $page_count; $i++) {
   if ($i === $page) { // this is current page
       echo 'Page ' . $i . '<br>';
   } else { // show link to other page   
       echo '<a href=&quot;/menuitem.php?page=' . $i . '&quot;>Page ' . $i . '</a><br>';
   }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie implementiert man Datenbank-Paginierung in PHP mit MySQLs 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