PHP, MySQL ve Açık Kaynak


« PHP ile Sayfalama Yapımı

PHP ile sayfalama yapımını mantık olarak LIMIT ile satır sayısını alıp onu sayfalara bölmek anlamına getirebiliriz.
İletişim sayfasından bana ulaşarak bu dersi sabırla bekleyen sayın Süleyman Vural’a gösterdiği sabrından dolayı da teşekkür etmek isterim.

Birçok yoğun projeden fazla ders ekleme imkanım olmadı. Fakat yine de pek fazla detaya girmeden öncelikle örnek olarak yaptığım kodları paylaşacağım. Kodlar kütüphanemden örneğe çevirdiğim kodlardır.  SQL dosyasıyla birlikte çalışma dosyasını indirip localhostta deneme yanılma yöntemini kullanarak çalışmalar da yapabilirsiniz.

İleri ve geri sayfaları mantık olarak +1 ve -1 yapmaktan kaynaklanıyor. Yani İlerisi için şu anki sayfadan +1 arttırıyoruz ve gerisi içinde -1 azaltıyoruz. Kodlara bakarak daha iyi anlayabilirsiniz.

<?php

include ("ayar.php");

$limit = 5;

$git = @$_GET["git"];

if(empty($git) or !is_numeric($git)) {

$git = 1;

}

 $count		 = mysql_num_rows(mysql_query("SELECT id FROM sayfa"));
 $toplamsayfa	 = ceil($count / $limit);
 $baslangic	 = ($git-1)*$limit;

$sorgu = "SELECT * FROM sayfa ORDER BY id ASC LIMIT $baslangic,$limit";

$yazdir_sorgu = mysql_query( $sorgu, $mysqlbaglantisi) or die(mysql_error() );

while ($yazdir = mysql_fetch_array($yazdir_sorgu)){

echo $yazdir['title'];
echo "<br>";

}

if($count > $limit) :
 $x = 2; // akrif sayfadan önceki/sonraki sayfa gösterim sayisi
 $lastP = ceil($count/$limit);

 if($git > 1){

 $onceki = $git-1;

 echo "<a href="?git=$onceki">« Önceki Sayfa </a>";

 }

 // sayfa 1'i yazdir
 if($git==1) echo "<span class="sayfa">[1]</span>";
 else echo "<a href="?git=1">[1]</a>";
 // "..." veya direkt 2
 if($git-$x > 2) {
 echo "...";
 $i = $git-$x;
 } else {
 $i = 2;
 }
 // +/- $x sayfalari yazdir
 for($i; $i<=$git+$x; $i++) {
 if($i==$git) echo "<span class="sayfa">[$i]</span>";
 else echo "<a href="?git=$i">[$i]</a>";
 if($i==$lastP) break;
 }
 // "..." veya son sayfa
 if($git+$x < $lastP-1) {
 echo "...";
 echo "<a href="?git=$lastP">[$lastP]</a>";
 } elseif($git+$x == $lastP-1) {
 echo "<a href="?git=$lastP">[$lastP]</a>";
 }

 if($git < $lastP){

 $sonraki = $git+1;

 echo "<a href="?git=$sonraki"> Sonraki Sayfa » </a>";

 }

endif;

?>

Çalışma dosyasını buradan indirip ayar.php dosyasından kendi mysql bağlantı ayarlarını yaparak sql dosyasınıda import ederek örneği inceleyebilirsiniz.
Kavradıktan sonra kendi sayfalama sistemlerinizide geliştirirsiniz.





13 Yorum


  • 11.Şubat.2010
    murat inal yazdı

    teşekkür ederim bende php ye yeni başladım ama örneğiniz gercekten kolay anaşılır olmuş ancak eleştirmek gibi olmasın ama değişkenlerinize türkce anlaşılır isimler verseniz daha cabuk anlardım =)

  • 27.Mayıs.2010
    Burdayiz.NET yazdı

    teşekkürler phpde kendimce sayfa derliyorum bu hazırlamış oldugun konu iyi bir deneyim oldu benim için ;)

  • 19.Kasım.2010
    Serdar yazdı

    Merhaba paylaşım için çok teşekkürler, kodlama tamamen sizemi ait yoksa başka kaynaklardanmı derlediniz?

  • 13.Ocak.2011
    Mehmet D. yazdı

    Verdiğin kodlar için teşekkürler fakat bu kodu çalıştırınca hata verir (: Neden mi?

    Örneğin 70. satır;

    echo "<a href="?git=$sonraki"> Sonraki Sayfa » </a>";
    

    şeklinde değil de

    echo "<a href=\"?git=$sonraki\"> Sonraki Sayfa » </a>";
    

    Şeklinde olması gerekiyor :) yani ” koyarsanız otomatik olarak echo komutunu kapatmış olacaksınız ve sayfa hata verecek bunu engellemek için echo içinde ” kullanmanız gerekiyorsa ” kullanacağınız yerlerin başına \ koymanız yeterli olacaktır yukarıda verdiğim örnekteki gibi..

    ve altına keşke alıntıdır yazsaydınız :) alıntı değildir demeyin. eğer siz bunu kendiniz kodlamış olsaydınız denemiş olurdunuz. denemiş olsaydınız bu hatanın farkına varırdınız.

    Saygılarımla

  • 19.Ocak.2011
    Ahmet ÇOBAN yazdı

    Gayet Türkçe zaten örnek adam php yi mi Türkçe yazcak :s

  • 25.Mart.2011
    Atlantis yazdı

    Ahmet D yani adam paylasmıs yazmıs çizmiş hemen gelip ne die öyledir böyledir diosun. ne güzel herkez faydalanıyor. bende aldım şimdi seo ya uyarlamaya calısıcam.

  • 27.Nisan.2011
    ilqercan yazdı

    çok teşekkürler kodu arşivime aldım artık çoğu scriptimde kullanıcam.

  • 07.Mayıs.2011
    şafak saraçoğlu yazdı

    teşekkürler birkaç düzenlemeden sonra yazdığım scriptte kullanıyorum

  • 07.Mayıs.2011
    jackrw yazdı

    verdiğin bilgiler için teşekkür ediyorum çok faydalı bi çalışma olmuş eline sağlık..

  • 28.Mayıs.2011
    adddd ddd yazdı

    projem için gerekli biri yardım edebilirmi melih_oztrk@hotmail.com

  • 11.Kasım.2011
    gökan sel yazdı

    mysql_fetch_array() neden sql cümlesi değişkeni $sorgu yu direk kullanmadınız $yazdır_sorgu değişkeni performansı etkilemezmi? vede mysql_close() neden kullanılmaz bizim türk scriptlerinde anlamadım …

  • 23.Kasım.2011
    Fatih Toprak yazdı

    @gökan adam yapıcağını yapmış neden yaranılamamazlık söz konusu. deki, güray bu şekilde düzenleyelim mantık budur / bu olur. ne yani ne bu hiddet – celal ? :)

  • 31.Ocak.2012
    Mustafa yazdı

    paylaşım çok teşekkür ederim.

Yorumla