Php Pdo Sayfalama Yapmak
Merhabalar bu dersimizde php fonksiyonlarından LIMIT kullanarak kolayca verilerimizi sayfalayabiliriz.
öncelikle sayfalama mantığını anlamak için kısaca özetleyelim
$toplamVeri = $db->query("SELECT COUNT(*) FROM veriler")->fetchColumn(); // Tabloda kaç tane kayıt olduğunu buluyoruz $goster = 3; // Her sayfada kaç veri görünsün $toplamSayfa = ceil($toplamVeri / $goster); // Toplam sayfa sayımızı buluyoruz sonucu yuvarlıyoruz $sayfa = $_GET["s"]; // Sayfa numaramızı get metodu ile yolladığımız "s" değeri ile alıyoruz if($sayfa < 1) $sayfa = 1; // Eğer kullanıcı sayfa numarasına 1'den küçük değer girerse 1.sayfayı gösteriyoruz if($sayfa > $toplamSayfa) // Eğer kullanıcı sayfa numarasına toplam sayfadan daha fazla değer girerse en son sayfayı gösteriyoruz { $sayfa = (int)$toplamSayfa; } $limit = ($sayfa - 1) * $goster; // Veri tabanında listelemme yaparken limit ile kaçıncı veriden başladığını belirtiyoruz.
Burada kodlarımızı tanıdık açıklamlarınıda yazmış olduk Artık veritabanından verilerimizi çekebliriz.
$veriler = $db->prepare("SELECT * FROM veriler LIMIT :basla, :bitir"); $veriler->bindValue(":basla",$limit,PDO::PARAM_INT); $veriler->bindValue(":bitir",$goster,PDO::PARAM_INT); $veriler->execute(); $dizi = $veriler->fetchAll(PDO::FETCH_OBJ);
Verilerimizi çektik ve artık sayfamıza yazdırmaya geldi sıra foreach kullnarak içeriğimizin başlık ve detayını sayfamıza yazdırdık
foreach ($dizi as $item) { ?> <div class="icerik"> <h2><?php echo $item->baslik;?></h2> <p><?php echo $item->icerik;?></p> </div> <hr> <?php } ?>
Artık sayfalama ya geçelim ve sayfa butonlarımızı yazıpsayfamızı tanımlayalım
<ul class="sayfalama"> <?php for($i = 1; $i<=$toplamSayfa;$i++) { ?> <li><a href="index.php?s=<?php echo $i;?>"><?php echo $i;?></a></li> <?php } ?> </ul>
son halimiz toparlarsak aşağıdaki gibi herkese kolay gelsin
<?php require_once("baglan.php"); // Veritabanı bağlantı dosyası ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Anasayfa</title> <style> ul li{list-style: none;} ul.sayfalama li{float:left;} ul.sayfalama li a{background:#403f3f;text-decoration:none;color:#c8c6c6;display:block;padding:7px;margin:7px;} </style> </head> <body> <?php $toplamVeri = $db->query("SELECT COUNT(*) FROM veriler")->fetchColumn(); $goster = 3; $toplamSayfa = ceil($toplamVeri / $goster); $sayfa = $_GET["s"]; if($sayfa < 1) $sayfa = 1; if($sayfa > $toplamSayfa) { $sayfa = (int)$toplamSayfa; } $limit = ($sayfa - 1) * $goster; $veriler = $db->prepare("SELECT * FROM veriler LIMIT :basla, :bitir"); $veriler->bindValue(":basla",$limit,PDO::PARAM_INT); $veriler->bindValue(":bitir",$goster,PDO::PARAM_INT); $veriler->execute(); $dizi = $veriler->fetchAll(PDO::FETCH_OBJ); foreach ($dizi as $item) { ?> <div class="icerik"> <h2><?php echo $item->baslik;?></h2> <p><?php echo $item->icerik;?></p> </div> <hr> <?php } ?> <ul class="sayfalama"> <?php for($i = 1; $i<=$toplamSayfa;$i++) { ?> <li><a href="index.php?s=<?php echo $i;?>"><?php echo $i;?></a></li> <?php } ?> </ul> </body> </html>