PHP 8 ile sayfalama, büyük veri setlerini kullanıcı dostu bir şekilde görüntülemek için kullanılır. Sayfalama, genellikle veritabanlarından veri çekerken kullanılır ve verileri belirli sayfalara bölerek daha yönetilebilir hale getirir. İşte PHP 8 ile sayfalama yapmanın temel adımları ve örnek bir uygulama:
1. Veritabanı Bağlantısı
Öncelikle, bir veritabanına bağlanmanız gerekir. Bu örnekte MySQL kullanacağız.
<?php
$host = 'localhost';
$db = 'veritabani_adi';
$user = 'kullanici_adi';
$pass = 'sifre';
try {
$pdo = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Bağlantı hatası: " . $e->getMessage();
}
?>
2. Toplam Kayıt Sayısını Alma
Sayfalama yapmak için toplam kayıt sayısını bilmemiz gerekir.
<?php
$stmt = $pdo->query("SELECT COUNT(*) FROM tablo_adi");
$totalRows = $stmt->fetchColumn();
?>
3. Sayfa Başına Kayıt Sayısı
Sayfa başına kaç kayıt görüntülemek istediğinizi belirleyin.
$limit = 10; // Sayfa başına gösterilecek kayıt sayısı
$totalPages = ceil($totalRows / $limit);
4. Aktif Sayfanın Belirlenmesi
Kullanıcının hangi sayfada olduğunu belirlemek için bir GET parametresi kullanabilirsiniz.
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$page = max($page, 1); // Sayfa numarasını 1 veya daha büyük yap
$offset = ($page - 1) * $limit; // Offset hesaplama
5. Verileri Çekme
Veritabanından verileri sayfalara bölerek çekin.
$stmt = $pdo->prepare("SELECT * FROM tablo_adi LIMIT :limit OFFSET :offset");
$stmt->bindValue(':limit', $limit, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
6. Sayfaları Gösterme
Kullanıcıya sayfa bağlantılarını gösterin.
echo "<ul class='pagination'>";
for ($i = 1; $i <= $totalPages; $i++) {
if ($i === $page) {
echo "<li class='active'>$i</li>";
} else {
echo "<li><a target="_blank" href='?page=$i'>$i</a></li>";
}
}
echo "</ul>";
Tam Örnek
Aşağıda yukarıdaki tüm adımları birleştiren bir örnek bulunmaktadır:
<?php
$host = 'localhost';
$db = 'veritabani_adi';
$user = 'kullanici_adi';
$pass = 'sifre';
try {
$pdo = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->query("SELECT COUNT(*) FROM tablo_adi");
$totalRows = $stmt->fetchColumn();
$limit = 10;
$totalPages = ceil($totalRows / $limit);
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$page = max($page, 1);
$offset = ($page - 1) * $limit;
$stmt = $pdo->prepare("SELECT * FROM tablo_adi LIMIT :limit OFFSET :offset");
$stmt->bindValue(':limit', $limit, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($results as $row) {
echo "<p>{$row['column_name']}</p>"; // 'column_name' yerine uygun sütun adını yazın
}
echo "<ul class='pagination'>";
for ($i = 1; $i <= $totalPages; $i++) {
if ($i === $page) {
echo "<li class='active'>$i</li>";
} else {
echo "<li><a target="_blank" href='?page=$i'>$i</a></li>";
}
}
echo "</ul>";
} catch (PDOException $e) {
echo "Hata: " . $e->getMessage();
}
?>
Sonuç
Bu örnekle, PHP 8 kullanarak veritabanından verileri sayfalama yöntemiyle çekmeyi öğrenmiş oldunuz. Sayfalama, kullanıcı deneyimini artırmak için önemli bir özelliktir ve büyük veri setleri ile çalışırken oldukça faydalıdır.