ホームページ >データベース >mysql チュートリアル >PHP で単純なデータベースのページネーションを実装するには?

PHP で単純なデータベースのページネーションを実装するには?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-21 19:07:10238ブラウズ
<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?

この改良された例には以下が含まれます:

  • エラー処理: try-catch ブロックは、潜在的なデータベース接続エラーを処理します。
  • 準備されたステートメント: 準備されたステートメントを使用して、SQL インジェクションの脆弱性を防ぎます。 これはセキュリティにとって非常に重要です。
  • 入力検証: 元の例では filter_input が使用されていましたが、包括的な検証が不足していました。 このバージョンでは、ページ番号が正の整数であり、有効な範囲内であることが保証されます。
  • より明確なデータ表示: データは、より使いやすい形式 (順序なしリスト) で表示されます。 implode 部分をデータベース テーブルの列名と一致するように調整する必要があります。
  • 完全な HTML: レンダリングを向上させるための完全な HTML 構造を提供します。
  • CSS スタイル: ページネーション リンクのスタイルを設定するための基本的な CSS が含まれています。
  • プレースホルダー値: "your_database""your_user""your_password""your_table" を実際のデータベース資格情報とテーブル名に置き換えてください。

このコードを実行する前に、必要なデータベースとテーブルを必ず作成してください。 この拡張されたサンプルは、PHP でのページネーションのための、より堅牢で安全なソリューションを提供します。

以上がPHP で単純なデータベースのページネーションを実装するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。