Heim >Datenbank >MySQL-Tutorial >Wie implementiert man Datenbank-Paginierung in PHP mit MySQLs LIMIT und 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
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;
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; } }
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="/menuitem.php?page=' . $i . '">Page ' . $i . '</a><br>'; } }
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!