|
Kaan
678 posts |
#579 2014-03-19 23:09 GMT | |
|
İçerikleriniz çoğaldı, bayağı kaynağınız ve birikiminiz oldu. Ve artık bunları sayfalamanın zamanı geldi. MySQL veritabanı tablosu verileri ile sayfalama yapımı anlatacağım bu yazıda genel sayfalama mantığını anladıktan sonra başka kaynaklardan gelen (array, xml, vs.) verilerle de sayfalama yapabileceğinize inanıyorum.
Toplam sayfa sayısını bulmak Sayfalama olayına öncelikle toplam sayfa sayısını bulmakla baÅŸlayalım. Bu iÅŸlem için toplam içerik sayısını bir sayfada göstereceÄŸimiz içerik sayısına böleceÄŸiz, çıkan so : hp]$sayfada = 5; // sayfada gösterilecek içerik miktarını belirtiyoruz. yfa = ceil($toplam_icerik / $sayfada);[/highlight]$sorgu = mysql_query('SELECT COUNT(*) AS toplam FROM mesajlar'); $sonuc = mysql_fetch_assoc($sorgu); $toplam_icerik = $sonuc['toplam']; $toplam_sayfa = ceil($toplam_icerik / $sayfada); Buradaki ince noktalardan birisi yukarı yuvarlamak. 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. EÄŸer çok fazla içeriÄŸiniz varsa, her sayfada toplam içerik sayınızı sayan bu SQL sorgusunu çalıştırmak yerine bir ÅŸekilde cache uygulayıp oradan okutmanız performans açısından daha faydalı olacaktır. [ Kod: anın içeriÄŸini listelemek[/b] code]<<İlk sayfa <Önceki 35 36 37 38 [39] 40 41 42 43 Sonraki> Son sayfa>>[/code]Bir sayfada ne kadar iÃ**10065482c36919fc9dd4d**ilde; 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. [highlight=php] 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>';[/highlight] 1000+ sayfadan çok daha ötesi için burada anlattığımız “LIMIT 10, 5″ ifadesini kullanmak yerine ÅŸu slaytta anlatılan yöntemleri inceleyebilirsiniz. Not: Alıntır. Çok faydalı bir makale hazırlamış yazan arkadaşımız herkesin elinin altında olması gereken bir makale. Buradaki Sayfama uyguladım ve sorunsuz çalışmaktadır her hangi bir sorun yaÅŸarsanız burada belirtebilirsiniz.
Kişiliğim, hayatım hakkında konuşabilirsiniz. Fikir yürüte bilirsiniz. Beni öyle böyle sanabilirsiniz. Ama emin olamazsınız. Sizin hakkımdaki yorumlarınız, sanmalarınız benim gerçek de ne olduğumu değiştirmez. Baktığım yeri söyleye bilirsiniz ama ne gördüğümü ASLA...
|