Bir site ya da projeye başladığımda, yazması en sıkıcı gelen işlerin başında veri sayfalama gelir. Her seferinde sayfalama işlemlerini bu yüzden en sona bırakırım. Daha önceki sayfalama makalelerimi okuduysanız hep karmaşık kodlardan oluştuğunu görebilirsiniz. Her seferinde bu kodları tekrar tekrar yazmak nedendir bilmem beni hep bunaltmıştır, öyle ki kopyala-yapıştır bile angarya gelir. Buna bir son vermem gerektiğini düşünüp, hazır OOP programlamaya kendimi alıştırmaya başladığım şu zamanlarda bununla ilgili bir sınıf yazmak istedim ve birşeyler karaladım. Benim can sıkıntımı fazlasıyla ortadan kaldıran bir sınıf hazırladım ve bunu sizlerle paylaşmak istedim.
Sınıfıma SAYFALAYICI ismini verdim. 3 temel özelliğe değer atadıktan sonra bir fonksiyon çalıştırarak istediğim aralıktaki kayıtlara ulaşabiliyor, dolayısıyla sayfalama işlemlerini daha rahat bir şekilde icra edebiliyorum. Özellik isimlendirmede eski bir ASP'ci olarak Recordset nesneleriyle benzer isimler kullandım. Sınıf dosyasını ve örnek uygulamayı buraya tıklayarak indirebilirsiniz. Örnek uygulamanın çalışır halini görmek için ise buraya tıklayabilirsiniz.
Örnek uygulamaya geçmeden önce sınıfımın özellik ve metodlarını kısaca tanımlayayım. Sınıf 8 özellik ve 1 metoddan oluşuyor.
Bu 3 özelliğe değer atandıktan sonra sayfala() metodunun çağırılması verilerin düzenlenmesi için yeterlidir. Bundan sonraki özellikler sadece okunabilir. Üzerine yazmaya zorlarsanız kodların çalışmasında hata oluşabilir. (OOP metoduyla kod yazmaya yeni başladığımdan sadece okunabilir bir özellik tanımlamayı henüz bilmiyorum.)
|
|
Örnek uygulamada kullanmak üzere kütüphanemdeki kitapları, yazarlarını ve yayın evlerini bir veritabanında topladım. Bunu söylerken utanmalı mıyım bilmiyorum ama sizin de göreceğiniz üzere kütüphanemde bilgisayar ve bilişim dışında hiç kitap yok. Veritabanı yapısı ve içeriği şöyle:
|
|
Bunu kullanarak hazırladığım demo sayfanın kodları ise aşağıda:
|
|
Kod içerisine yorum eklediğimden burada bunları tekrar etme gereği duymadım. Yine de bir sorunuz ya da sorununuz olursa yorum yazmaktan çekinmeyin.
Not: Bu yazının bir kopyası da http://tuncay.kinali.net/php-ile-mysql-verilerini-sayfalama-sinifi.html adresinde yayınlanmaktadır.
önceki yazı CakePHP ile Form Verilerini Doğrulama |
sonraki yazı Sql İnjectiona Ufak Bir önlem |
Aynı kodları kopyala yapıştur bile angaryadan daha sıkıcı :) teşekkürler sınıf için
Aynı dertten muzdarip insanların olduğunu tahmin edebiliyordum. Beni büyük dertten kurtardı, umarım sizi de kurtarır.
Hocam ellerine sağlık
ben projelerimde hazır bir sınıfı kullanıyorum
http://pear.php.net/package/Pager
buradan temin edebileceğiniz sınıfın demosu ise
http://www.bursaportal.com/haberler_4.html
altta ve json ve jqury kullanarak aynı betiğin
http://www.rejimde.com/uzman/ferin-batman-20.html#makaleler
bir örneğini de burada kullanmıştım bana gayet kullanışlı geldi
İyi Çalışmalar.
Desene Amerika'yı yeniden keşfetmişim. Ama olsun, class'larla OOP çalışma açısından bu sınıfa verdiğim uğraş bende iyi gelişmelere sebep oldu.
İsterseniz bu kısımda Zend Framework'ü bir kütüphane gibi kullanıp. Zend_Paginator'u kullanabilirsiniz. Ayrıca Zend_Db ye bir göz atmanızı tavsiye ederim.
Dolaşan birçok profesyonel paginator classlar var, bir tane fazla olmasında sakınca yokutr. teşekkürler :)
İlginçtir, ben bunu yazana kadar böyle birşeyi ne duydum ne gördüm :)
sağolun hocam. güzel bir sınıf olmuş. muharrem emin hocamın kgpager sayfa sınıfınıda öneririm hazır sayfa sınıfı arayanlara.
pillinetwork sitelerine yorum ekleyebilmek ve daha fazlası için, üye olun ya da giriş yapın.
Nokta ve pilli ortak yapımı olan kodaman.org hep birlikte içerik üretip gelirini yazarları ile paylaştığımız kolektif bir kod yazarları blogudur. Siz de katılabilirsiniz.