Selam arkadaşlar. Bugün sizlere veritabanından alınan verini nasıl sayfalandığını anlatacağım. Aslında çok basit bir matematiksel işlem ile yapılıyor. Genelde ben bütün sistemlerimde burada anlatacağım yöntemi kullanıyorum. Fakat bunun üzerine birçok sınıf yazılmış durumda. İsteyen kişiler olursa tekrar belirtebilirim…

Verileri sayfalama konusundan önce tam olarak bir açıklama yapalım. Arkadaşlar veritabanına bağlanacağız ve verileri alacağız. Eğer ki verilerimiz 10 taneden ( veya sizin belirlediğiniz bir sayı ) fazla ile yeni bir sayfa yaratılacak. Böylece he sayfada sadece 10 adet veri ile düzen sağlanmış olacak. Bunun yanında birden fazla işlemden de kurtulmuş olacağız…

Öncelikle arkadaşlar kodlarımızı verelim;

<?php
$sayfa = $_GET["sayfa"];
if(empty($sayfa)) $sayfa=1;
$sayfalik_kayit = 10;
$toplam_kayit = mysql_query("SELECT count(*) FROM yazilar");
$toplam_sayfa = ceil($toplam_kayit/$sayfalik_kayit);
if($sayfa>$toplam_sayfa) $sayfa=1;
$baslangic = (($sayfa*$sayfalik_kayit)-$sayfalik_kayit);
$al = $sayfa * $sayfalik_kayit;

$yazilar = mysql_query("SELECT * FROM videolar order by id desc limit $baslangic,$al");

//verileri yazdır
?>

Evet gördüğünüz gibi bu şekilde. Öncelikle arkadaşlar adres satırından sayfa değişkenini alıyoruz. Sonra bakıyoruz; eğer herhangi bir veri atanmamışsa 1 e eşitliyoruz. Burada işlemlerin problem çıkartmaması için kontrol ediliyor. Sonra bir sayfada kaç adet veri olacağını belirtiyoruz. Ardından toplam veriler alınıyor. Sonra; toplam veri sayısı ile bir sayfada olacak verilerin bölümü elde ediliyor. Yani veritabanında 25 veri var; 25/10′ dan 2.5 yapıyor. Fakat ceil yani bir üste yuvarla ile 2.5 -> 3 e yuvarlanıyor. Böylece toplam sayfa elde ediliyor. Sonrasında yukarıdan alınan sayfa toplam sayfadan fazla mı diye bakılıyor. Eğer fazla ise tekrar 1 e eşitleniyor. Burada önemli olan sayfanın herhangi bir suistimale uğramaması.

Sonra olarak kaçtan kaça verinin alınacağı öğreniliyor. Yani arkadaşlar 25 adet veri varsa;
Birinci sayfada;0-10
İkinci sayfada;10-20
Üçüncü sayfada;20-25
arası çekiliyor. İşte kaçla kaç arasında ilk sayı bulunuyor. Ardından bu dizilimde ikinci sayı bulunuyor ve veritabanından ikisi arasındaki veriler çekilip yazdırılıyor. Kodlar ise index.php?sayfa=n yapıldığı sürece istenilen sayfa şeklinde çalışıyor…

Bazı arkadaşlar sayfaları yazdırmak isteyecektir ki bu zaten mantıklı olan :D . O zaman liste kutusu ( combobox ) şeklinde yapmalarını öneriyorum;

<?php
$echo .= "<div id='sayfa'><a href='?s=1'>Ilk Sayfa</a> <select onchange=\"location='?s='+this.value\">\n";
for($i=0;$i<$toplam_sayfa; $i++){
$sayfa_no = $i+1;
$sec = ($sayfa_no==$sayfa) ? " selected" : "";
$echo .= "<option value=\"$sayfa_no\" $sec>Sayfa $sayfa_no</option>\n";
}
$echo .= "</select> <a href='?s=".$toplam_sayfa."'>Son Sayfa</a></div>";
echo $echo;
?>

;

Arkadaşlar burada ise sayfalar şu şekilde; 1 [combobox] n oluyor. Sayfalar listeye yazdırılıyor. Kişi seçtiği anda adres satırına veriler yollanıyor. Tabi istenilen sayfada bu sayede açılıyor…

Şimdilik hoşçakalın.

Herkese iyi günler, iyi çalışmalar…