Yukarıda anlattığım bu yöntem ile artık içeriklerinizi sayfalı yapabilirsiniz. Ama biraz ileri görüşlü olursak ya da elimizde çook fazla içerik ve bu nedenle yüzlerce sayfamız varsa; 1’den 200’lere kadar çok uzun sayfalar bağlantımız olur. Hem çirkin hem de kullanıcı dostu olmayan bir görüntü ile karşılaşırız. Bunu önlemek için ne kadar çok sayfamız olursa olsun kullanıcını o an kaçıncı sayfada ise ona ilaveten sonraki ve önceki 5-10 sayfayı göstermeliyiz. Yani şu şekilde;
PHP Kod:
<<İlk sayfa <Önceki 35 36 37 38 [39] 40 41 42 43 Sonraki> Son sayfa>>
Ben bu olay için bir kod bloğu hazırladım, bunu direkt çalışmanıza dahil edip kullanabilir ya da inceleyip daha farklı versiyonlarını yazabilirsiniz. Dikkat edilmesi gereken nokta; bu yöntemin doğru ve güzel çalışması için
$sayfa_goster değerine
her zaman tek sayı girin. Bu sayede kullanıcı bulunduğu sayfayı yukarıdaki örnekteki gibi ortada görür.
PHP Kod:
// yukarıdan geldiği varsayılan değişkenler:
// $toplam_sayfa ve $sayfa
$sayfa_goster = 11; // gösterilecek sayfa sayısı
$en_az_orta = ceil($sayfa_goster/2);
$en_fazla_orta = ($toplam_sayfa+1) - $en_az_orta;
$sayfa_orta = $sayfa;
if($sayfa_orta < $en_az_orta) $sayfa_orta = $en_az_orta;
if($sayfa_orta > $en_fazla_orta) $sayfa_orta = $en_fazla_orta;
$sol_sayfalar = round($sayfa_orta - (($sayfa_goster-1) / 2));
$sag_sayfalar = round((($sayfa_goster-1) / 2) + $sayfa_orta);
if($sol_sayfalar < 1) $sol_sayfalar = 1;
if($sag_sayfalar > $toplam_sayfa) $sag_sayfalar = $toplam_sayfa;
if($sayfa != 1) echo ' <a href="?sayfa=1"><<İlk sayfa</a> ';
if($sayfa != 1) echo ' <a href="?sayfa='.($sayfa-1).'"><Önceki</a> ';
for($s = $sol_sayfalar; $s <= $sag_sayfalar; $s++) {
if($sayfa == $s) {
echo '[' . $s . '] ';
} else {
echo '<a href="?sayfa='.$s.'">'.$s.'</a> ';
}
}
if($sayfa != $toplam_sayfa) echo ' <a href="?sayfa='.($sayfa+1).'">Sonraki></a> ';
if($sayfa != $toplam_sayfa) echo ' <a href="?sayfa='.$toplam_sayfa.'">Son sayfa>></a>';
1000+ sayfadan çok daha ötesi için burada anlattığımız “LIMIT 10, 5” ifadesini kullanmak yerine
şu slaytta anlatılan yöntemleri inceleyebilirsiniz. Eğer fırsat olursa buradaki slaytta bahsi geçen yöntemleri de ayrı bir yazı ya da bu yazıya ek olarak yazmayı düşünüyorum.
Bu konuyla alakalı aklınıza takılan soruları ya da uyguladığınızda karşılaştığınız sorunları paylaşmaktan çekinmeyin.
Bir sonraki PHP serüveninde görüşmek üzere!