Forumlar - Other Category - Bilgi ArÅŸivi - PHP ile sayfalama yapma

php sayfalama örneði,php sayfalama sistemi,sayfalama mantýðý
 

Author
Message
Kaan

Administrators

Online status

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.

 

$sorgu = mysql_query('SELECT COUNT(*) AS toplam FROM mesajlar');

$sonuc = mysql_fetch_assoc($sorgu);

$toplam_icerik = $sonuc['toplam'];

 

$toplam_sayfa = ceil($toplam_icerik / $sayfada);
yfa = ceil($toplam_icerik / $sayfada);[/highlight]
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]
Bir sayfada ne kadar iÃ**10065482c36919fc9dd4d**ilde;
code]<<İlk sayfa <Önceki 35 36 37 38 [39] 40 41 42 43 Sonraki> Son sayfa>>[/code]
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.


Bunlara baktınızmı?
Forumlar için önceki ve sonraki konu yapma
PHP ve Bootstrap ile Sayfalama (Pagination)
CKEditör Resimleri Responsive Yapma
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...