Daha önceki derslerde sayfalama mantığının nasıl olduğunu detaylarıyla incelemiştik. Bu dersimizde ise PDO ile sayfalama işleminin nasıl yapıldığını göreceğiz. Bildiğiniz gibi PDO ile mysql ifadeleri kullanılmadığından dolayı, sayfalama da olayında da bazı değişikliğe gidildi. Şimdi bu değişikliğin ne olduğunu ve sayfalamanın nasıl yapıldığını görelim.
Öncelikle sayfalama yapabilmek için veri tabanı bağlantısı oluşturmamız gerekiyor. Veri tabanı bağlantısı ile ilgili bilgileri detaylarıyla PDO İle MySQL Bağlantısı Kurma dersinde bulabilirsiniz. Şimdi veri tabanı bağlantısını oluşturuyoruz ve sayfalama işlemine geçiyoruz.
<?php try{ $db = new PDO("mysql:host=localhost;dbname=ibo;charset=utf8", "root",""); }catch(PDOException $ibo){ echo $ibo->getMessage(); } ?>
Yukarıdaki gibi veri tabanı bağlantısı yaptıktan sonra sayfalama işlemlerine geçelim. İlk olarak GET metodu ile sayfalar arası geçiş yapacağımızdan dolayı değişken tanımlayarak olaya başlıyoruz.
$Sayfa = @intval($_GET['sayfa']); if(!$Sayfa) $Sayfa = 1;
Bu tanımlama ile sayfalar arası geçişleri sağlıyor olacağız. Buradaki if koşulu ile $Sayfa değişkenin oluşacak bir hata da değerini 1’e eşitleyip başlangıç sayfasına yönlendiriyoruz. Şimdi ise sayfalama yapacağımız verileri alıp, kaç adet veri olduğunu bulmak için, veri tabanındaki verileri saydırıyoruz.
$Say = $db->query("select * from makale order by id DESC"); $ToplamVeri = $Say->rowCount();
$Say ile verilere ulaşıp, $ToplamVeri ile de verileri başarılı bir şekilde saydırdık. Şimdi yapmamız gereken şey, Limit belirlemek ve kaç sayfa olduğunu bulacağımız hesaplama değişkenlerini oluşturmaktır.
$Limit = 8; $Sayfa_Sayisi = ceil($ToplamVeri/$Limit); if($Sayfa > $Sayfa_Sayisi){$Sayfa = 1;}
Sayfada kaç adet veri gösterileceğini belirttikten sonra, Toplam veriyi, gösterilecek olan veri sayfasına bölerek buluyoruz. Daha sonrasında tanımlanan if koşuluyla $Sayfa değişkenine girilen $_GET değerinin toplam sayfadan daha büyük bir değer girilmesini önlemek. Dilerseniz burada 1 yerine $Sayfa_Sayisi değişkenine eşitleyerek, son sayfa yönlendirebilir ya da 1 yazarak ilk sayfa gitmesini sağlayabilirsiniz. Bu seçim size kalmış.
$Goster = $Sayfa * $Limit - $Limit; $GorunenSayfa = 5;
Yukarıdaki değişkenlerle; gösterilecek olan sayfa aralığını ve gösterilecek olan sayfalama numaralarını tanımlamış oluyoruz.
Şimdi ise belirlenen Limit koşullarına göre verileri alacağımız sorguyu oluşturuyoruz. Bununla beraber foreach döngüsü için gerekli tanımayı yapıyoruz. Bu işlemler ile sayfalama olayını bitirmiş oluyoruz. Şimdi ise foreach döngüsünü kullanarak GET ile gelen değerler doğrultusunda verileri yazdıralım.
<?php $Makale = $db->query("select * from makale order by id DESC limit $Goster,$Limit"); $MakaleAl = $Makale->fetchAll(PDO::FETCH_ASSOC); ?> <div id="Makale"> <?php foreach($MakaleAl as $MakaleBas){?> <div class="Makale"> <h1><?=$MakaleBas["baslik"]?></h1> <span><?=$MakaleBas["kisa"]?></span> </div> <?php } ?> </div>
Örnekteki gibi foreach döngüsü oluşturarak içerisinde yapıyı ve yazdırılacak olan verileri tanımlıyoruz. Örnek teşkil etmesi için sadece başlık değerini yazdırdım. Bununla ilgili düzenlemeler size kalmış artık.
Şimdi ise listelenen verilerin alt kısmına sayfa numaralarını belirlemek kaldı. Bu işlem kontrol ifadeleri ve for döngüsü ile hazırlanan basit bir yapıdır. İlk olarak ilk ve önceki butonların yer aldığı tanımlamayı yapalım.
<?php if($Sayfa > 1){?> <span class="say_sabit"><a href="index.php?sayfa=1">İlk</a></span> <div class="say_sabit"><a href="index.php?sayfa=<?=$Sayfa - 1?>">Önceki</a></div> <?php } ?>
Bu kod yapısı ile ilk ve önceki butonlarını oluşturmuş oluyoruz. Şimdi ise sayfaların listeleneceği for döngüsünü oluşturuyoruz. Böylelikle 1-2-3-4-5 gibi sayfa numaralarını listelemiş olacağız.
<?php for($i = $Sayfa - $GorunenSayfa; $i < $Sayfa + $GorunenSayfa +1; $i++){ if($i > 0 and $i <= $Sayfa_Sayisi){ if($i == $Sayfa){ echo '<span class="say_aktif">'.$i.'</span>'; }else{ echo '<a class="say_a" href="index.php?sayfa='.$i.'">'.$i.'</a>'; } } } ?>
Bu kod bloğu ile 1-2-3-4-5 diye sayfalama numaralarının oluşturulmasını sağladık. Son adımda ise, Sonraki ve Son sayfa butonlarını oluşturuyoruz.
<?php if($Sayfa != $Sayfa_Sayisi){?> <div class="say_sabit"><a href="index.php?sayfa=<?=$Sayfa + 1?>">Sonraki</a></div> <div class="say_sabit"><a href="index.php?sayfa=<?=$Sayfa_Sayisi?>">Son</a></div> <?php } ?>
Bu kodla sayfalama olayının sonuna gelmiş oluyoruz. Böylelikle PDO ile gelişmiş düzeyde sayfalamanın nasıl yapılacağını öğrenmiş olduk. Tabi her derste olduğu gibi bu derste de yer alan yapıyı ihtiyacınıza göre düzenleyebilirsiniz.
Gayet açıklayıcı ve yararlı bilgiler İbrahim bey en kısa sürede laravel eğitimlerinizi bekliyoruz teşekkürler