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!