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.
< ?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ı
Posted by sword fish
8 responses to "PHP – Sayfalama Sistemi (Paging)"
14:10 on Temmuz 13th, 2009
oldum olası şu sayfalamayı anlayamadım
9:34 on Eylül 18th, 2009
aynı fıkırdeyım
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
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?
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.
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..
11:01 on Kasım 2nd, 2009
bir yardımcı olabilecekmisiniz ?
acaba anadizinde olmadığından mı admin panel çalışmıyor ?
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