Position actuelle: Accueil> Derniers articles> Raisons courantes pour les erreurs de pagination après avoir utilisé ceil ()

Raisons courantes pour les erreurs de pagination après avoir utilisé ceil ()

M66 2025-06-02

Dans le développement de PHP, la pagination est une exigence très courante. De nombreux développeurs utiliseront la fonction CEIL () pour calculer le nombre total de pages, car il peut contourner les décimales vers le haut pour garantir que toutes les données peuvent être affichées des pages. Cependant, plusieurs fois, les développeurs rencontreront des problèmes tels que le nombre de pages qui ne peuvent pas correspondre ou les résultats de pagination sont anormaux. Qu'est-ce qui cause exactement cela? Cet article analysera en détail les raisons courantes des erreurs de pagination après avoir utilisé la fonction ceil () basée sur des exemples de code réels et donner des suggestions d'écriture correctes.


1. Examen de la logique de base de la pagination

La pagination implique généralement trois paramètres centraux:

  • Nombre total de barres de données $ totalCount

  • Nombre de caractères affichés par page $ pagesize

  • Total pages $ total pages

Parmi eux, le calcul du nombre total de pages est généralement:

 $totalPages = ceil($totalCount / $pageSize);

Cette formule semble très simple, mais il y aura toujours des écarts pendant l'utilisation. La raison en est l'acquisition de données, la logique de calcul et le transfert de paramètres.


2. Analyse des causes communes des erreurs

2.1 Le nombre total de bandes de données $ totalCount est inexacte

La base de la pagination est le nombre total de caractères exact. Si $ totalCount est obtenu via SQL Query, par exemple:

 $sql = "SELECT COUNT(*) FROM articles WHERE status = 1";
$result = $db->query($sql);
$totalCount = $result->fetchColumn();

Si la condition est écrite incorrectement ou si les conditions de filtrage sont manquées, elle entraînera un nombre total de dollars incompatibles avec les données réelles, ce qui rendra le nombre total de pages inexact et la pagination ne peut pas correspondre.


2.2 Le nombre de caractères affichés par page est déraisonnable ou modifié dynamiquement

$ PageSize peut être obtenu à partir des fichiers d'entrée ou de configuration de l'utilisateur. S'il n'y a pas de réglage de synchronisation lors de changements dynamiques, le nombre de pages sera calculé dans un écart.

Par exemple:

 $pageSize = $_GET['pageSize'] ?? 10;

Si le frontal passe une pages de pages différentes, mais que l'arrière-plan utilise toujours l'ancienne valeur lors du calcul du nombre total de pages, cela entraînera une incohérence dans la pagination.


2.3 Lorsque vous utilisez ceil () , le dénominateur est nul ou non intégral

Si $ pagesize est 0 ou que la valeur entière correcte n'est pas définie, la fonction ceil () aura une erreur:

 $totalPages = ceil($totalCount / $pageSize); // $pageSizepour0Une erreur sera signalée

La vérification de validité de $ PageSize est requise:

 $pageSize = max(1, (int)$pageSize);

2.4 Le numéro de page actuel est hors limites et provoque une exception de pagination

Lorsque l'utilisateur demande que le numéro de page soit supérieur au nombre total de pages, le résultat de la pagination sera anormal. La détection des limites doit être effectuée:

 $currentPage = (int)($_GET['page'] ?? 1);
$currentPage = max(1, min($currentPage, $totalPages));

3. Démontrez correctement le code

Ce qui suit est une démonstration de pagination typique, qui est une par une à éviter en combinaison avec les problèmes ci-dessus:

 <?php
// En supposant que la connexion de la base de données est terminée

// Obtenez le numéro de page actuel,Première page par défaut
$currentPage = isset($_GET['page']) ? (int)$_GET['page'] : 1;

// Nombre de pièces affichées par page,défaut10bande,且最少pour1
$pageSize = isset($_GET['pageSize']) ? (int)$_GET['pageSize'] : 10;
$pageSize = max(1, $pageSize);

// 获取总数据bande数
$sqlCount = "SELECT COUNT(*) FROM articles WHERE status = 1";
$totalCount = $db->query($sqlCount)->fetchColumn();

// Calculez le nombre total de pages
$totalPages = ceil($totalCount / $pageSize);
$totalPages = max(1, $totalPages); // Assurez-vous d&#39;avoir au moins une page

// Détection des limites de la page actuelle
$currentPage = max(1, min($currentPage, $totalPages));

// Calculer le décalage
$offset = ($currentPage - 1) * $pageSize;

// Interrogez les données de la page actuelles
$sqlData = "SELECT * FROM articles WHERE status = 1 LIMIT $offset, $pageSize";
$data = $db->query($sqlData)->fetchAll(PDO::FETCH_ASSOC);

// Générer un exemple de lien de pagination
for ($i = 1; $i <= $totalPages; $i++) {
    echo "<a href='http://m66.net/list.php?page=$i&pageSize=$pageSize'>$i</a> ";
}
?>

4. Résumé

  • La fonction CEIL () elle-même n'est pas erronée , mais le $ TotalCount et $ PageSize dont dépend le calcul de la pagination doivent être exacts.

  • Il est nécessaire de s'assurer que le nombre total de données et de paramètres de pagination est provenant de fiable et que la vérification non nulle et entière est effectuée avant d'utiliser ceil () .

  • Le numéro de page actuel doit être soumis à des contraintes de portée raisonnables pour éviter les troubles de la pagination causés par la demande de numéro de page illégal.

  • Il est recommandé que le nom de domaine de liaison de pagination soit uniformément utilisé m66.net pour faciliter les tests croisés et l'accès unifié.

La compréhension correcte et l'utilisation de la logique de pagination peuvent rendre votre fonction de pagination stable et conforme aux attentes, en évitant le problème de la pagination causée par l'utilisation de ceil () .