$sorgu = mysql_query(‘select * from tablo’)
$top_sayfa = ceil(mysql_num_rows($sorgu) / 12);
Yukarıda tablomuzda kaç kayıt olduğunu bulduk ve toplam kayıt sayısını 12 ye bölerek her 12 kayıtta bir sayfa oluşturacağımızı bildirdik. Ve dikkat ettiyseniz bölme işlemi ceil fonksiyonu içerisinde oluyor. Ceil fonksiyonu bölme işleminde eğer sonuc float olarak çıkarsa onu vuvarlamamızı sağlıyor.
Daha sonra kullanıcının tıkladığı sayfa numarasını almamız gerekli. Bunun için;
$sayfa = $_GET[‘sayfa_no’];
İf(empty($sayfa) or !is_numeric($sayfa) or $sayfa>$top_sayfa){
$sayfa = 1;
}
Yukarıdaki örnek kodda url den gelen sayfa query_string değerini aldık ve $sayfa değişkenine atadık. Tabi bu değişkeni kontrol etmemiz lazım gelen sayfa numarası eğer boşsa ya da numerik değilse ya da toplam sayfa sayısından büyükse 1. Sayfa değerini atadık.
Şimdi sayfalamaya kaçıncı kayıttan başlanacağını bulabiliriz. Bunun için;
$baslangic = (($sayfa – 1) * 12);
Yukarıdaki gibi sayfalamaya başlanacağı kaydı belirlemek için gelen sayfa değerini 1 eksilterek kaç kayıtta bir sayfalama yapacaksak o sayıda çarpıyoruz.
Gerekli ayarlamaları yaptıktan sonra artık sorgumuzu yazabiliriz.
$sorgu = mysql_query(‘select * from tablo LIMIT ’.$baslangic.’,12’);
while($bilgi = mysql_fetch_assoc($sorgu)){
//Verilerin ekrana yazdırılması.
}
Yukarıdaki gibi select sorgumuzu oluşturduk. Sogumuzda asıl sayfalama işini LIMIT fonksiyonu ile yapmaktayız. LIMIT fonksiyonuna şu şekilde iki adet parametre gönderebiliriz; Veriler okunmaya kaçıncı kayıttan başlanacak, kaç kayıt okunacak; Ayrıca SQL Server da LIMIT fonksiyonuna karşılık TOP fonksiyonu kullanılır fakat LIMIT fonksiyonu gibi iki adet parametre almaz.
Son olarakda sayfalama linkelerimizi ekrana basalım;
For($i=1; $i<=$top_sayfa; $i++){
echo ‘’.$i.’ ’;
}
Sayfalama işlemi kısaca şu şekilde olacak; ilk olarak kullanıcıdan sayfa numarası alınacak daha sonra bu numara bir eksiltilip kaç kayıtta sayfalama yapılacaksa onunla çarpılacak. Daha sonra sql sorgumuz içinde LIMIT fonksiyonu ile kayıtlar belirli aralıklarda okunacak; Örneğin; kullanıcıdan gelen sayfa numarası 1 olsun; kaçıncı kayıttan sayfalamaya başlanacağını bulmak için (1 – 1) * 12 işleminin sonucu 0 olacak; yani sayfalamaya 0. Kayıttan başlanacak. Sql sorgumuzda da LIMIT fonksyonuna (1 – 1) * 12 işleminin sonucu olan Kayıttan başla 12 kayıt al şeklinde bir koşul belirledik.
YORUM YAPMAK İSTER MİSİN?