Php PDO ile Gelişmiş Sayfalama Yapımı

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 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.
- 19.03.2015 / 11:04:29 25

Sosyal Medya Paylaşım Alanı

Kaynak(lar)

Bunlarda İlginizi Çekebilir

Genel Makaleler
Seo(.htaccess)

Tanıtım Yazısı Nedir, En Uygun Nasıl Yazılır?

Kategori: Seo(.htaccess) | 12.07.2014
11:12 Css Dersleri
3:05 Html Dersleri

Msn ile Canlı Destek Hattı Yapma

Kategori: Html Dersleri | 03.05.2013
13:57 Css Dersleri

Css ile Kenarlık Vermek | Border Kullanımı

Kategori: Css Dersleri | 03.05.2013

Yorum Listesi (11) # YorumYap

  • Mehmet Ali (15.04.2015 - 21:21:05)
    Giren adam önce Allah razı olsun diyor teşekkür ediyor. Sonra kopyalarken ana avrat küfür ediyor. Şahsen ben öyle yaptım.
  • Mehmet Ali (03.05.2015 - 02:58:48)
    2.Gelişim hocam ellerine sağlık :)
  • İbrahim Halil (04.10.2015 - 00:20:34)
    Mehmet ali şahsen ben öyle yapmadım yorumu görünce biraz sana küfrettim o kadar.
  • Mehmet Ali (13.12.2015 - 19:15:01)
    3.Gelişim hocam, sağol. Allah razı olsun.
  • Acemi (08.01.2016 - 23:19:26)
    Hocam elinize sağlık çok güzel kodlama.Ancak seo ile ilgili problem var.
    http://www.benimsite.com/deneme.php?sayfa=1
    http://www.benimsite.com/deneme.php?sayfa=2 ...bu şekil güzel çalışıyor.
    Fakat:
    http://www.benimsite.com/deneme-1.html
    http://www.benimsite.com/deneme-2.html ...yapınca boş beyaz sayfa geliyor.

    Rica etsem link yapısını ve htaccess kodlamasını pdo'ya uygun olarak yazabilirmisiniz.
  • murat (15.11.2016 - 05:29:26)
    İbo harbi kral adamsın. Başarılarının devamını dilerim kardeşim. inşallah baştan sona PDO ile sıfırdan bir ders hazırlarsın. Tekrar sevgiler kardeşim.
  • UfukArt (28.11.2016 - 10:43:04)
    Teşekkürler emeğine sağlık.
  • Hakan (30.11.2016 - 12:33:56)
    Bu kodun tamamini bizimle paylasmaniz mumkun mu acaba? Harika bir calisma olmus.
  • Hasan Tahsin (02.12.2016 - 20:55:46)
    hocamızın bot yapımıyla ilgili videosunu durdura durdura seyrederek yaptığım eczane botu, akabinde para vererek yaptırdığım botları lanet olsun diyerek sildiğim halde halen daha sapasağlam. Allah razı olsun :). yapmak için değil öğrenmek için seyretmek lazım.
  • İsmini vermek istemeyen birisi. (31.01.2017 - 19:31:05)
    İbrahim Çevrük hocam Teşekkür ederim. Ellerine sağlık senin gibisini daha görmedim . Millet 'Merhaba bugün sizlere...' ile başlıyor sonrası başka yerden ezberlediğini anlatıyor gerisi yok. Sayende bilmediğim şeyleri basitçe kolayca öğrenmiş oldum ve bildiklerimi de pekiştirdim. Tüm derslerin için gene l olarak yazıyorum. esen kal.
  • Horus (17.04.2017 - 21:45:15)
    Güzel ve yalın bir anlatım olmuş teşekkür ederim.

Hadi Sende Yorum Yap!

Yorum Gönderilmiştir. Onaylandıktan Sonra Mesajınız Yayınlanacaktır.