PDA

Orijinalini görmek için tıklayınız : Php Sayfalama Mantığı Hakkında



kazanova21641
15.Ekim.2014, 11:45
Php Sayfalama Mantığı


Php ile yazmış olduğunuz sistemlerin birçoğunda içeriklerinizi sayfalar halinde göstermemnz gerekebilir.Veya admin paneli tasarimlarinda eklenmiş içerikleri sayfalamamiz gerekebilir.Sayfalamanın amaçı hem sayfa çubuğunun fazlaca aşşağıya kaymasını önleyerek kullanıcıya daha iyi bir web deneyimi yaşatıp sayfalar halinde içeriği gezinmesini sağlamak hemde birçok içeriğimiz varsa hepsinin aynı sayfada listelenmesinin explorer i kilitlemesi gibi durumlarin önüne geçmektir.


Olaya bir başka yönü ile de bakacak olursak içerikli sayfa sayımızı dolayısı ile index sayımızı da sayfalama ile artırmış oluruz.


Sayfalama yapabilmek için öncelikle ilgili içerik sayısının ve her bir sayfada bulunmasını istediğimiz içerik sayısının bilinmesi gerekir.


İlgili içerik sayısını mysql sorgusu aracılığı ile istediğimiz şartlara uyan içeriği saydırarak öğrenebiliriz, her sayfadaki içerik sayısı ise bize kalmış bir durumdur bir değişkene sabit şekilde tanımlayabiliriz.


$count = mysql_num_rows(mysql_query(“Select * from icerik”)); // içerik sayısı alındı
$perpage = 24; // her sayfadaki içerik sayısı girildi
$page = !empty($_GET["page"]) ? intval($_GET["page"]) : 1; //get metodu ile açılmak istenen sayfa alındı
$sayfasayisi=ceil($count/$perpage); //toplam içerik sayısı sayfa başına içeriğe bölünüp sayfa sayısı bulundu
if($page>$sayfasayisi) // eğer get ile aldığımız sayfa sayısı varolan sayfa sayısından büyükse (güvenlik önlemi)
{
header(“Location: ../404.php”); // 404 sayfasına yönlendirilme yapıldı
exit(); // curl ile sayfa içeriği görüntülenmesinin önüne geçilmek amacıyla exit komutu kullanıldı
}


üstteki kod yapısını sayfamız kodlamasının en üst alanında php tagları arasına yerleştirerek hem ilgili sayfalama hesaplarını yapmış olup hemde get ile alınan sayfa sayısı bizim mevcut sayfa sayımızdan yük++++e diğer kodlar çalıştırılmadan müdahalede bulunup 404 sayfasına yönlendirme sağlamış oluruz.


Sayfalama görünümünün yazdırılması işlemi aşşağıdaki gibi yapılabilir.


<?php


if($count > $perpage) :
$x = 5; // aktif sayfadan önceki/sonraki sayfa gösterim sayısı
$sonsayfa = ceil($count/$perpage); // son sayfanın hesaplanması


// sayfa 1’i yazdır
if($page==1)


echo ” <span class=\”aktifolan\”>1</span>”;
else


echo ” <a href=\”yeni-1\”>1</a>”;


// “…” veya direkt 2


if($page-$x > 2) {


echo “<span>………</span>”;
$i = $page-$x;
} else {
$i = 2;
}
// +/- $x sayfaları yazdır
for($i; $i<=$page+$x; $i++) {
if($i==$page) echo ” <span class=\”aktifolan\”>[$i]</span>”;
else echo ” <a href=\”yeni-“.$i.”\”>$i</a>”;
if($i==$sonsayfa) break;
}
// “…” veya son sayfa
if($page+$x < $sonsayfa-1) {
echo “<span>………</span>”;
echo ” <a href=\”yeni-“.$sonsayfa.”\”>$sonsayfa</a>”;
} elseif($page+$x == $sonsayfa-1) {
echo ” <a href=\”yeni-“.$sonsayfa.”\”>$sonsayfa</a>”;
}
endif;


?>


sayfa sıralamasının yapılmasını istediginiz alana üstteki kodumuzu yapıştırın.Htacess ile sayfalama yapıldığı varsayılarak kodlardaki url yapısı sef url lere göre yapılandırılmıştır.htaccess ile sef yapıyı nasıl kuracağınızı bloğumuzda arama yaparak bulabilirsiniz.