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&#91;'page'&#93;)){
$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&#91;'page'&#93;)){
$nerden=($_GET&#91;'page'&#93;*$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&#91;'haber'&#93;)){
echo $_GET&#91;'haber'&#93;;
}
}else if (isset($_GET&#91;'haber'&#93;)){
$id=$_GET&#91;'haber'&#93;;
$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>

Proje dosyalarını buradan indirebilirsiniz.  İndir 

10 thoughts on “PHP – Sayfalama Sistemi (Paging)

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

  • 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?

  • 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.

  • 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..

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

Bir Cevap Yazın

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