Veritabanından çekilen içerikleri PHP ile sayfalamak

kendi yazdığınız bir içerik paylaşım sisteminde; içerikleriniz, veri tabanından çekildiğinde artık eskisi gibi tek bir sayfaya sığmıyorsa, sayfalama zamanı gelmiş demektir. bu sorunu çözebilmemiz adına veri tabanından çekilen içerikleri PHP* ile sayfalama işlemi yapacağız.

*aslında bu mantık ile bir çok dilde ve ya başka kaynaklardan gelen (xml, array vb.) bilgilerle sayfalama işlemini yapabilirsiniz.

1. Toplam sayfa sayısını bulmak

sayfalama işlemine, toplam kaç sayfa üretmemiz gerektiğini bularak başlayalım. burada kullanacağımız mantığın ana gereksinimi bir sayfada kaç adet içerik göstermek istediğimiz. toplam içerik sayımızı, bir sayfada göstermek istediğimiz içerik sayısına böldüğümüzde toplam sayfa sayısını bulmuş oluyoruz:

burada önemli olan bölüm sonucunu yuvarlamak. örneğin; toplam içerik sayımız 12 ve her sayfada 5 içerik göstermek istediğimizde (12/5) sonuç 2.4 çıkacaktı. biz bu sonucu ceil komutu ile 3‘e yuvarladık. eğer ceil yerine round fonksiyonunu kullansaydık 2‘ye yuvarlayacaktı. bu durumda son 2 içeriğimiz gözükmeyecekti.

2. Sayfa içeriğini listelemek

toplam sayfa sayımızı bulduk. şimdi, sayfaya göre içerik listeleme işlemi yapacağız. bu noktada kullanıcı tarafından sayfa numarasını almamız gerekiyor. örnekte sayfa numarası verisi GET ile çekiliyor. yani, sayfa numarası verisi 2 ise; adres çubuğunda index.php?sayfa=2 gözükecek.

bize kullanıcıdan sayfa numarası verisi lazım olduğundan sayı haricinde yapacağı klavye girişlerini engellememiz lazım. bunu yapabilmek için kod menüsündeki 2. satırda (int) kullandık.

Hangi sayfada olduğumuzu da belirlediğimize göre artık bulunduğumuz sayfanın içeriklerini veri tabanından çekebiliriz:

Sanırım kilit ve kafa karıştıran noktası burası. LIMIT ifadesi ile tüm içerikler arasından bizim istediğimiz adet ve aralıktaki içerikleri istiyoruz. Normalde sadece “LIMIT 10” dediğimizde 10 adet içerik verir. Fakat virgül ile ikinci bir sayı daha girdiğimizde kaçıncı sıradan sonra vereceğini ifade eder. Yani “LIMIT 0, 5” dediğimizde 0. içerikten yani ilk içerikten sonra 5 tane ver diyoruz, bu bizim ilk sayfamız oluyor. 2. sayfa için “LIMIT 5, 5” yani 5. içerikten sonra 5 tane göster diyoruz. 3. sayfa için “LIMIT 10, 5”. Bu ifade için “($sayfa – 1) * $sayfada” işlemimizi yapıyoruz.

3. Sayfa numaralarını göstermek

sırasıyla, toplam sayfa sayımızı ve sayfalarda gösterilecek içerikleri belirledik. şimdi ise her en alta, sayfalarımızın numaraları ile birlikte o numaralı sayfaya (örneğin 5’e tıklandığında 5 numaralı sayfaya gidecek.) gitmesini sağlayacak linkleri oluşturacağız:

kod menüsünün 2. satırında bulunduğumuz sayfayı da dikkate alarak o sayfayı yazarken link yapmadık.

Kod Ekranı

şimdi ise rahat anlayabilmemiz için kod ekranımıza bir bütün olarak bakalım:

Ek olarak;

yukarıda anlatılan bu yöntemle artık içeriklerimizi sayfalara bölebiliriz. yapabilirsiniz. ancak, elimizde çok 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 durumla karşı karşıya kalırız. bunu önlemek için; ne kadar çok sayfamız olursa olsun, kullanıcı o an kaçıncı sayfada ise ona ilaveten sonraki ve önceki 5-10 sayfayı göstermeliyiz. yani şu şekilde;

bu görüntü için gerekli olan kod bloğu aşağıda. aşağıdaki kod bloğu istenildiği gibi düzenlenip, kullanılabilir. dikkat edilmesi gereken nokta; bu yöntemin doğru ve güzel çalışması için $sayfa_goster değerine her zaman tek sayı girilmesi gerektiği.

yukarıdaki kod parçacığı kullanıma hazırdır. değişken isimleri gibi detayları kendinize göre düzenleyip, kullanabilirsiniz.

phpr.org

bir yorum yaz.

Benzer yazılar

Aramak istediğinizi üstte yazmaya başlayın ve aramak için enter tuşuna basın. İptal için ESC tuşuna basın.

Üste dön