Rss Feed
Tweeter button
Facebook button
Technorati button
Reddit button
Myspace button
Linkedin button
Delicious button
Digg button
preload preload preload preload

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ı

Yazar hakkında
Müslüm Gümüşlüoğlu
Hem yazılım, hem kendini geliştiriyor. teknoloji meraklısı... kişisel weblogu
  • 8 responses to "PHP – Sayfalama Sistemi (Paging)"

  • Ali
    14:10 on Temmuz 13th, 2009

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

  • fitness
    9:34 on Eylül 18th, 2009

    aynı fıkırdeyım

  • yunus
    18:53 on Ekim 5th, 2009

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

  • taner macit
    21:21 on Ekim 15th, 2009

    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?

  • serpito
    10:00 on Ekim 17th, 2009

    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
    15:14 on Ekim 19th, 2009

    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
    11:01 on Kasım 2nd, 2009

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

  • serpito
    11:47 on Kasım 2nd, 2009

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

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

  • Leave a Reply

    * Required
    ** Your Email is never shared