Bei der PHP -Entwicklung ist Paging eine sehr häufige Anforderung. Viele Entwickler verwenden die Funktion ceil () , um die Gesamtzahl der Seiten zu berechnen, da sie die Dezimalstellen nach oben rundeten, um sicherzustellen, dass alle Daten angezeigt werden können. Oft treten Entwickler jedoch auf Probleme auf, wie z. B. die Anzahl der Seiten, die nicht übereinstimmen, oder die Paginationsergebnisse sind abnormal. Was genau verursacht das? In diesem Artikel wird nach Verwendung der Funktion CEIL () die häufigen Gründe für Paginationsfehler anhand der tatsächlichen Code -Beispiele ausführlich analysiert und korrekte Schreibvorschläge abgeben.
Die Paginierung umfasst normalerweise drei Kernparameter:
Gesamtzahl der Datenbalken $ TotalCount
Anzahl der angezeigten Zeichen pro Seite $ pageszesize
Gesamtseiten $ Gesamtseite
Unter ihnen beträgt die Berechnung der Gesamtzahl der Seiten normalerweise:
$totalPages = ceil($totalCount / $pageSize);
Diese Formel scheint sehr einfach zu sein, aber es wird immer noch Abweichungen während der Verwendung geben. Der Grund ist die Datenerfassung, die Berechnungslogik und die Parameterübertragung.
Die Grundlage der Pagination ist die genaue Gesamtzahl der Zeichen. Wenn $ TotalCount durch SQL -Abfrage erhalten wird, zum Beispiel:
$sql = "SELECT COUNT(*) FROM articles WHERE status = 1";
$result = $db->query($sql);
$totalCount = $result->fetchColumn();
Wenn die Bedingung falsch geschrieben wird oder die Filterbedingungen übersehen werden, wird $ TholeCount mit den tatsächlichen Daten nicht übereinstimmen, wodurch die Gesamtzahl der Seiten ungenau wird und die Pagination nicht übereinstimmt.
$ pageSize kann von Benutzereingabe- oder Konfigurationsdateien erhalten werden. Wenn bei dynamischen Änderungen keine Synchronisationsanpassung vorliegt, wird die Anzahl der Seiten in einer Abweichung berechnet.
Zum Beispiel:
$pageSize = $_GET['pageSize'] ?? 10;
Wenn das Front-End einen anderen pageszensischen Pagentise übergeht, der Hintergrund jedoch den alten Wert bei der Berechnung der Gesamtzahl der Seiten verwendet, verursacht er Inkonsistenz im Paging.
Wenn $ pageSize 0 beträgt oder der korrekte Ganzzahlwert nicht festgelegt ist, hat die Funktion CEIL () einen Fehler:
$totalPages = ceil($totalCount / $pageSize); // $pageSizefür0Ein Fehler wird gemeldet
Die Gültigkeitsüberprüfung von $ pageSize ist erforderlich:
$pageSize = max(1, (int)$pageSize);
Wenn der Benutzer nach der Seitenzahl größer ist als die Gesamtzahl der Seiten, ist das Paging -Ergebnis abnormal. Die Grenzerkennung sollte durchgeführt werden:
$currentPage = (int)($_GET['page'] ?? 1);
$currentPage = max(1, min($currentPage, $totalPages));
Das Folgende ist eine typische Paginierungsdemonstration, die nacheinander in Kombination mit den oben genannten Problemen zu vermeiden ist:
<?php
// Unter der Annahme, dass die Datenbankverbindung abgeschlossen wurde
// Holen Sie sich die aktuelle Seitennummer,Standard -erste Seite
$currentPage = isset($_GET['page']) ? (int)$_GET['page'] : 1;
// Anzahl der pro Seite angezeigten Stücke,Standard10Streifen,且最少für1
$pageSize = isset($_GET['pageSize']) ? (int)$_GET['pageSize'] : 10;
$pageSize = max(1, $pageSize);
// 获取总数据Streifen数
$sqlCount = "SELECT COUNT(*) FROM articles WHERE status = 1";
$totalCount = $db->query($sqlCount)->fetchColumn();
// Berechnen Sie die Gesamtzahl der Seiten
$totalPages = ceil($totalCount / $pageSize);
$totalPages = max(1, $totalPages); // Stellen Sie sicher, dass Sie mindestens eine Seite haben
// Aktuelle Seitengrenzerkennung
$currentPage = max(1, min($currentPage, $totalPages));
// Offset berechnen
$offset = ($currentPage - 1) * $pageSize;
// Fragen Sie die aktuellen Seitendaten ab
$sqlData = "SELECT * FROM articles WHERE status = 1 LIMIT $offset, $pageSize";
$data = $db->query($sqlData)->fetchAll(PDO::FETCH_ASSOC);
// Generieren Sie Paging -Link -Beispiel
for ($i = 1; $i <= $totalPages; $i++) {
echo "<a href='http://m66.net/list.php?page=$i&pageSize=$pageSize'>$i</a> ";
}
?>
Die CEIL () -Funktion selbst ist nicht falsch , aber der $ TholeCount und $ pagesizieren, dass die Paging -Berechnung abhängt, muss genau sein.
Es ist notwendig, sicherzustellen, dass die Gesamtzahl der Daten- und Paging-Parameter zuverlässig bezogen wird und die Überprüfung von ungleich Null und Ganzzahl vor der Verwendung von CEIL () durchgeführt werden.
Die aktuelle Seitennummer sollte angemessene Umfangsbeschränkungen unterliegen, um Paging -Störungen zu vermeiden, die durch die Anforderung illegaler Seitennummer verursacht werden.
Es wird empfohlen, dass der Name Paging Link-Domänen einheitlich verwendet wird .
Das korrekte Verständnis und die Verwendung von Paging -Logik kann Ihre Paging -Funktion stabil machen und mit den Erwartungen übereinstimmen, wodurch das Problem des Paging -Pagings vermieden wird, das durch die Verwendung von Ceil () verursacht wird.