Maison >base de données >tutoriel mysql >Comment implémenter une pagination simple de base de données en PHP ?

Comment implémenter une pagination simple de base de données en PHP ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-21 19:07:10203parcourir
<code class="language-php"><?php
// Database connection (replace with your credentials)
$host = 'localhost';
$dbname = 'your_database';
$user = 'your_user';
$password = 'your_password';

try {
    $dbh = new PDO("mysql:host=$host;dbname=$dbname", $user, $password);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("Database connection failed: " . $e->getMessage());
}


// Get total number of records
$stmt = $dbh->query('SELECT COUNT(*) FROM your_table');
$totalRecords = $stmt->fetchColumn();


// Pagination settings
$recordsPerPage = 20;
$totalPages = ceil($totalRecords / $recordsPerPage);
$currentPage = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$currentPage = max(1, min($currentPage, $totalPages)); // Ensure page number is within valid range

$offset = ($currentPage - 1) * $recordsPerPage;


// Fetch data for current page
$stmt = $dbh->prepare("SELECT * FROM your_table LIMIT :limit OFFSET :offset");
$stmt->bindParam(':limit', $recordsPerPage, PDO::PARAM_INT);
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);


// Display data
echo "<h2>Data (Page " . $currentPage . " of " . $totalPages . ")</h2>";
if ($data) {
    echo "<ul>";
    foreach ($data as $row) {
        echo "<li>" . implode(", ", $row) . "</li>"; // Adjust as needed for your table structure
    }
    echo "</ul>";
} else {
    echo "<p>No data found for this page.</p>";
}



// Display pagination links
echo "<div class='pagination'>";
for ($i = 1; $i <= $totalPages; $i++) {
    $activeClass = ($i == $currentPage) ? 'active' : '';
    echo "<a href='?page=" . $i . "' class='" . $activeClass . "'>" . $i . "</a>";
}
echo "</div>";


?>

<!DOCTYPE html>
<html>
<head>
<title>Simple Pagination</title>
<style>
.pagination a {
    display: inline-block;
    padding: 8px 12px;
    margin: 0 4px;
    text-decoration: none;
    border: 1px solid #ccc;
}

.pagination a.active {
    background-color: #4CAF50;
    color: white;
}
</style>
</head>
<body>
</body>
</html>
</code>

How to Implement Simple Database Pagination in PHP?

Cet exemple amélioré comprend :

  • Gestion des erreurs : Un bloc try-catch gère les erreurs potentielles de connexion à la base de données.
  • Instructions préparées : Utilise des instructions préparées pour empêcher les vulnérabilités d'injection SQL. Ceci est crucial pour la sécurité.
  • Validation d'entrée : Alors que l'exemple original utilisait filter_input, il manquait une validation complète. Cette version garantit que le numéro de page est un entier positif et se situe dans la plage valide.
  • Affichage des données plus clair : Les données sont affichées dans un format plus convivial (une liste non ordonnée). Vous devrez adapter la partie implode pour qu'elle corresponde aux noms de colonnes de votre table de base de données.
  • HTML complet : Fournit une structure HTML complète pour un meilleur rendu.
  • Style CSS : CSS de base est inclus pour styliser les liens de pagination.
  • Valeurs d'espace réservé : N'oubliez pas de remplacer "your_database", "your_user", "your_password" et "your_table" par vos informations d'identification de base de données et le nom de votre table.

N'oubliez pas de créer la base de données et la table nécessaires avant d'exécuter ce code. Cet exemple amélioré fournit une solution plus robuste et sécurisée pour la pagination en PHP.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn