Artık içerikleriniz çoğaldı ve bunları sayfalara ayırarak hem düzenli bir hale getirmek, hemde sitenin hızlı çalışmasını istiyorsunuz.Peki sayfalamayı nasıl yapabiliriz?Hemen başlayalım.
İlk önce toplam sayfa sayısını bulalım.Aşağıdaki kod örneği ile sayfa sayısını buluyoruz.
Yazılım Soru - Kod Kısmı
$sayfada = 5; // sayfada gösterilecek içerik miktarını belirtiyoruz.
$sorgu = mysql_query('SELECT COUNT(*) AS toplam FROM makale');
$sonuc = mysql_fetch_assoc($sorgu);
$toplam_icerik = $sonuc['toplam'];
$toplam_sayfa = ceil($toplam_icerik / $sayfada);
Diyelim her sayfada 5 içerik istiyoruz ve 12 içerik var, bu durumda (12 / 5 = 2.4), ceil fonksiyonu ile bu rakamı 3’e yuvarlıyoruz. Eğer normal round fonksiyonunu kullanırsak böyle bir durumda 2 sayfamız olur ve son 2 içerik görünmez.
Evet şimdide bulunduğumuz sayfaya göre içerikleri listelemeye.Burada sayfa olarak yazan yeri isterseniz s olarakta yazabilirsiniz.Orası size kalmış.Şimdi link index.php?sayfa=2 gibi olacak.
Yazılım Soru - Kod Kısmı
// eğer sayfa girilmemişse 1 varsayalım.
$sayfa = isset($_GET['sayfa']) ? (int) $_GET['sayfa'] : 1;
// eğer 1'den küçük bir sayfa sayısı girildiyse 1 yapalım.
if($sayfa < 1) $sayfa = 1;
// toplam sayfa sayımızdan fazla yazılırsa en son sayfayı varsayalım.
if($sayfa > $toplam_sayfa) $sayfa = $toplam_sayfa;
Şimdi hangi sayfada olduğumuzu belirlediğimize göre artık verileri çekebiliriz.
Yazılım Soru - Kod Kısmı
// kaçıncı içerikten başlanacağını ifade edecek limit değeri.
$limit = ($sayfa - 1) * $sayfada;
$sorgu = mysql_query('SELECT * FROM makale LIMIT ' . $limit . ', ' . $sayfada);
while($icerik = mysql_fetch_assoc($sorgu)) {
// ...
}
Şimdi orada limit felan gördünüz noluyo lan dediniz değil mi :D Hemen açıklıyorum. LIMIT ifadesi eğer 15 yazarsanız veritabanındaki 15 içeriği getirir.Ama eğer 15 den sonra virgül ile ikinci bir sayı yazarsanız kaçıncı sıradan sonra vereceğini ifade eder.
Her neyse devam ediyorum.Ee şimdi listeleme olayını yaptık sayfalara nasıl gidecekler?Sakin olun hemen onuda anlatıyorum :D Bunun için döngü ile toplam sayfa sayısı kadar link oluşturacağız. Ayrıca bulunduğumuz sayfayı da dikkate alarak o sayfayı yazarken link yapmayacağız.Anladınız mı? Kodu vereyim daha iyi anlayın :D
Yazılım Soru - Kod Kısmı
for($s = 1; $s <= $toplam_sayfa; $s++) {
if($sayfa == $s) { // eğer bulunduğumuz sayfa ise link yapma.
echo $s . ' ';
} else {
echo '<a href="?sayfa=' . $s . '">' . $s . '</a> ';
}
}
Eveet bu kadardı artık sayfalamayı yaptınız :D Teşekkür etmeyi unutmayın :D Doğru cevap olarak işaretlemeyide :D