PHP – Sayfalama Sistemi (Paging)

Veri tabanımızda bulunan haberleri 15 ‘er 15′er sayfalarda göstererek örneğimize başlıyoruz. İlk olarak veri tabanımıza bağlanım haber tablomuzdaki haber sayısını ögreniyoruz.

Paging CSS


< ?php

require_once("mysql.php");
$qh_sayisi="SELECT COUNT(id) FROM haber";
$res_h_sayisi=$dba->query($qh_sayisi);
$row_h=$dba->fetch_assoc($res_h_sayisi);
$haber_sayisi=$row_h['COUNT(id)'];<span id="more-268"></span>

$kacar=15;
$s_sayisi=(floor($s_sayisi=$haber_sayisi/$kacar));
$kalan=$haber_sayisi%$kacar;
if ($kalan==0){                // paga sayfa sayısını belirledik
$s_sayisi;
}else if($kalan!=0){
$s_sayisi=$s_sayisi+1;
}

?>

Yukarıdaki kodlar ile “$haber_sayisi=$row_h['COUNT(id)'];” ile haber sayısınıhaber_sayısı değişkenine bildirdik. $kacar=15; ile her sayfada kaç adet kayıtın gösterileceğini belirlemiş olduk.

$kalan=$haber_sayisi%$kacar;
if ($kalan==0){                // paga sayfa sayısını belirledik
$s_sayisi;
}else if($kalan!=0){
$s_sayisi=$s_sayisi+1;
}

Bu kodlar ilede kaç sayfanın yer alacagını belirledik. Kalan bir sayı varsa örneğin 15 li sayfalama sisteminde 16 adet kayıt varsa 2 sayfa göstercek.Kalan bir sayı yoksa direk o sayıyı atıyacak örneğin 15 ‘li sayfalama sisteminde 45 adet kayıt varsa 3 gibi.

Aşağıdaki kodlar ilede hafızaya aldığımız sayfa sayısını ekrana yazdırıyoruz.


< ?php
for ($i=1; $i<=$s_sayisi; $i++) {
echo "<a href=haber.php?page=$i>$i ";
}
?>

Son olarakda sayfamız açıldıgında verilerin gösterilmesi kalıyor. Bu gösterme işlemini aşagıdaki kodlar ile yapabiliyoruz.


< ?php
if (empty($_GET['page'])){
$q1="select * from haber order by id desc LIMIT 15"; // page değeri boş ilen son eklenen 15 kayıtın gelmesini sağladık

}else if (isset($_GET['page'])){
$nerden=($_GET['page']*$kacar)-$kacar;
$q1="select * from haber order by id desc LIMIT $nerden,$kacar";//page değerine bağlı olarak 15 kayıtın gelmesini sağladık.

}
$res1=$dba->query($q1);
while($row=$dba->fetch_assoc($res1)){
$header=$row['header'];
$icerigi=substr($row['icerigi'],0,530);
$image=$row['image'];
$id=$row['id'];
?>

<div class="templatemo_section_1">
<h2 align="left">< ?=$header?></h2>
<p>
< ?php
if (empty($image)){
?>
<img src="admin/images/xampp_stop.png" width="125" height="70" border="2" align="top" />
< ?php
}else if (isset($image)){
?>
<a href="admin/images/<?=$image?>" rel="lightbox"><img src="admin/images/<?=$image?/>" width="125" height="70" alt="" /></a>

< ?php
}
?>
< ?=$icerigi?><br />
<a href="haber.php?haber=<?=$id?>">DEVAMI</a>
</p>
<div class="templatemo_line"></div>
</div>
< ?php
}if (isset($_GET['haber'])){
echo $_GET['haber'];
}
}else if (isset($_GET['haber'])){
$id=$_GET['haber'];
$query="select * from haber where id='$id' LIMIT 1 ";
$result=$dba->query($query);
$row_ht=$dba->fetch_assoc($result);
$id=$row_ht['id'];
$header=$row_ht['header'];
$icerigi=$row_ht['icerigi'];
$image=$row_ht['image'];
?>
<div class="templatemo_section_1_h">
<h1><center>< ?=$header?></center></h1>
< ?php
if (empty($image)){
?>
<img src="admin/images/xampp_stop.png" width="160" height="200" border="1"  />
< ?php
}else if (isset($image)){
?>
<a href="admin/images/<?=$image?>" rel="lightbox"> <img src="admin/images/<?=$image?/>" width="160" height="200" border="1"  /></a>
< ?php
}
?>
<p>o
<b>< ?=$icerigi?></b>
</p>
<p>
<a href="haber.php">Geri</a>
</p>
<p>

</p>
<div class="templatemo_line"></div>
</div>
< ?php
}
?>
<center>
<b>
< ?php
for ($i=1; $i<=$s_sayisi; $i++) {
echo "<a href=haber.php?page=$i>$i ";
}
?>
</b>
</center>

<div id="templatemo_footer">

İLETİŞİM Bilgileri
</div>

Kodlar’ın hepsi ve proje dosyalarnı buradan indire bilirsiniz.Porje Dosyaları

sword fish

Hem yazılım, hem kendini geliştiriyor. teknoloji meraklısı... kişisel weblogu

Website - More Posts

10 Comments

  • 13 Temmuz 2009 - 14:10 | Permalink

    oldum olası şu sayfalamayı anlayamadım :(

  • 18 Eylül 2009 - 09:34 | Permalink

    aynı fıkırdeyım

  • 05 Ekim 2009 - 18:53 | Permalink

    ya nerden değilde mesela mysql e dün eklenen içerikleri çeksin yani 1 gün önceki içerikleri nasıl çekeriz

  • 15 Ekim 2009 - 21:21 | Permalink

    iyi günler emekleriniz için teşekkürler ama bu şekilde işin içinden çıkmak gerçekten zor çünkü sizin veritabanınızı bilmiyoruz.Mümkünse bu konuyu çok daha sade bir veritabanında en basit mantığıyla anlatabilir misiniz?

  • 17 Ekim 2009 - 10:00 | Permalink

    taner , sayfalama sistemi için veritabanını bilmek gerekmiyor. işin püf noktası veri çekmek için kullandığın LIMIT değerini değiştirmek. her sayfada limit degerini orantılı bi şekilde arttırmak gerekiyor. herhangi bi sorun olursa e-posta yazabilirsin.

  • yunus
    19 Ekim 2009 - 15:14 | Permalink

    admin panelde

    haber düzenleme kısmı çalışmıyor..

    aynı şekilde güncel haber düzenle

    iletişim bölümü çalışmıyor..

    sadece haber ekleyebiliyorsunuz..

  • yunus
    02 Kasım 2009 - 11:01 | Permalink

    bir yardımcı olabilecekmisiniz ?
    acaba anadizinde olmadığından mı admin panel çalışmıyor ?

  • 02 Kasım 2009 - 11:47 | Permalink

    sayfanın başına error_reporting(E_ERROR); kodunu ekle yunus,

    hatanın ne olduğunu bilmene yardım eder

  • 27 Haziran 2010 - 19:31 | Permalink

    güzel olmuş fakat, ben Muharrem Erin Bey in yaptıgını kullanıyorum ,çok basit bir nesneler kullanılarak yapılmış,OOP nin yararı bence bu tür şeyleri kullanına ve php nin yanında OOP kullanın derim http://www.muharremerin.com/kgpager-php-class-v2-1-php-sayfalama-sinifi-vbb-benzeri/ yada phpclasses sitesinde de çok güzel class lar bulunmakdır.

  • mp3 indir
    02 Ağustos 2010 - 22:33 | Permalink

    harikasın usta çok lazımdı ya

  • Bir Cevap Yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

    *

    Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>