PHP Sayfalama Sınıfı

Gerek sql ile, gerekse explode ile bölerek kullanabilmek için az önce yazdığım, basit ama kullanışlı bir sınıf. Kolayca düzenleyip, istediğiniz yerde kullanabilirsiniz.


Sınıfı BURADAN indirebilirsiniz. Kullanım için örnek verecek olursak

PHP kodu
  1. $sorgu=mysql_query("SELECT count(id) as sayi FROM makale",$baglanti);
  2. $db=mysql_fetch_assoc($sorgu);
  3.  
  4. require_once('ek/class-sayfalama.php');
  5. $sayfalama= new sayfalama();
  6. $sayfalama->sayfa=& $_GET['sayfa'];
  7. $sayfalama->toplam=$db['sayi'];
  8. $sayfalama->sayfa_basina=$sitebilgi['sayfa_tane'];
  9. $sayfalama->url='index.php?sayfa=%d';
  10. $sayfalama->degisken='sayfa';
  11. $sayfalama->hazirla();
  12.  
  13. $sorgu=$vt->sorgu("SELECT baslik,girismetni
  14. FROM makale ORDER BY id DESC LIMIT ".$sayfalama->baslangic.",".$sayfalama->sayfa_basina);
  15.  
  16. while (............) { ....... }
  17.  
  18. echo $sayfalama->sayfala();
  19. unset($sayfalama);

şeklinde veritabanından aldığınız bilgileri sayfalayabilri veya

PHP kodu
  1. $sayfalar=explode('<!-- pagebreak -->',$metin);
  2. require_once('ek/class-sayfalama.php');
  3. $sayfalama= new sayfalama;
  4. $sayfalama->sayfa=& $_GET['sayfa'];
  5. $sayfalama->toplam=count($sayfalar);
  6. $sayfalama->sayfa_basina=1;
  7. $sayfalama->url='makale/dunyayi-kurtaran-adam/%d/';
  8. $sayfalama->hazirla();
  9.  
  10. $metin=$sayfalar[$sayfalama->baslangic];
  11. ....
  12. echo $sayfalama->sayfala();
  13. unset($sayfalama);
ile konu içinde de sayfalama yapabilrisiniz.

Bu sınıfın kodları da şu şekilde

PHP kodu
  1. <?php
  2. /*
  3. yazar: Gündüz Can YILMAZ
  4. Açıklama: sayfa sayısı, sayfa başına gösterilecek adet gibi ayarlardan sonra sizin için
  5. */
  6. class sayfalama {
  7. public $toplam;
  8. public $sayfa_basina;
  9. public $sayfa_sayisi;
  10. public $url;
  11. public $baslangic;
  12. public $ilerigeri;
  13. public $ilkson;
  14. public $sayfa;
  15. private $set;
  16. function __construct() {
  17. $this->sayfa_basina=10;
  18. $this->baslangic='0,10';
  19. $this->ilerigeri=true;
  20. $this->ilkson=true;
  21. $this->sayfa=1;
  22. $this->set=false;
  23. }
  24. function hazirla() {
  25. $this->sayfa=$this->sayfa < 1 ? 1 :$this->sayfa;
  26. $this->sayfa_sayisi=ceil($this->toplam/$this->sayfa_basina);
  27. $this->baslangic=(($this->sayfa-1)*$this->sayfa_basina);
  28. $this->set=true;
  29. }
  30.  
  31. function link($sayfa) {
  32. return sprintf($this->url,$sayfa);
  33. }
  34. function sayfala() {
  35. if($this->set==false) $this->hazirla();
  36. $ilk_sayfa=$this->sayfa-5;
  37. $son_sayfa=$this->sayfa+5;
  38. if($this->ilkson==true){
  39. $ilk_link='<a class="ilkson" href="'.$this->link(1).'"> <<< </a>';
  40. $son_link='<a class="ilkson" href="'.$this->link($this->sayfa_sayisi).'"> >>> </a>';
  41. } else $ilk_link=$son_link='';
  42.  
  43. if($ilk_sayfa <=1 ){$ilk_sayfa=1;$ilk_link='';}
  44. if($son_sayfa >= $this->sayfa_sayisi ){$son_sayfa=$this->sayfa_sayisi;$son_link=' ';}
  45. $sayfalar='<!-- sayfalama başlangıç --><p class="sayfalama">';
  46. $sayfalar.=$ilk_link;
  47. for($i=$ilk_sayfa;$i<=$son_sayfa;$i++){
  48. $class= ($this->sayfa==$i) ? 'aktif_sayfa' : 'pasif_sayfa';
  49. $sayfalar.='<a class="'.$class.'" href="'.$this->link($i).'" title="'.$i.'. Sayfa"> '.$i.' </a>';
  50. }
  51. $sayfalar.=$son_link;
  52. $sayfalar.='<!-- sayfalama bitiş -->';
  53. return $sayfalar;
  54. }
  55. }
  56. ?>

Bu sınıf için kullandığım css kodları ise şu şekilde

CSS kodu
  1. .sayfalama {
  2. float:right;
  3. padding:5px;
  4. }
  5. .sayfalama a {
  6. font-size:14px;
  7. font-weight:bold;
  8. color:#fff;
  9. padding: 5px 5px 5px 5px;
  10. margin: 0 1px 0 1px;
  11. border: 2px solid #262626;
  12. }
  13. a.aktif_sayfa { background:#8AC800; }
  14. a.pasif_sayfa { background:#DD6611; }

Okunma: 694 , Oy Sayısı: 29 , Puan: 8.34

Etiketler

php sayfalama , php sayfalama class , php sayfalama sinifi , sayfalama php , php ile sayfalama ,

irfan evrens03 Mart 2010 Çarşamba 00:30:04


yazdığınız sınıfın içerisinde kod aralarında yorum satırları ile olayları anlatırsanız daha faydalı olacaktır
||


Mürsel Türk09 Mayıs 2010 Pazar 10:00:05


Warning: Division by zero in C:AppServwwwmultimedyaekclass.php on line 28
Hatası veriyor neden acaba :S
||


Gündüz Can YILMAZ10 Mayıs 2010 Pazartesi 01:11:27


Sayın Mürsel, sayfalama yaparken
$sayfalama->sayfa_basina=10;
yerine
$sayfalama->sayfa_basina=0;
yazmış olabilir misiniz? Bu değişken her sayfada göstereilecek adedi belirliyor, sanırım siz bir şekilde sıfır atadınız o kısma
||


Mürsel Türk10 Mayıs 2010 Pazartesi 03:20:02


:S Hayır aynen siteden aldığım şekilde duruyor kontrol ettim
||


Mürsel Türk10 Mayıs 2010 Pazartesi 04:01:23


tamamdır o hatayı hallettim ama sayfalama gözükmüyor sayfa numaraları :S
||


Gündüz Can YILMAZ10 Mayıs 2010 Pazartesi 14:15:18


echo $sayfalama->sayfala();

satırı sayfa numaralarını göstermesi gereken satır. Tek sayfa da olsa gösteriyor. Sanıyorum orada da bir aksaklık yaşamışsınız. Kodlarda problem yok kullandğım hali ile yazdım. Dilerseniz, canyilmaz84 gmail, mailime kullandğınız hali ile atabilirsiniz. Sorunu çözmeye çalışırım

||


Mürsel Türk10 Mayıs 2010 Pazartesi 16:41:38


Tamamdır çözdüm sorunu. Gözümden kaçmış ufak tefek şeyler. Çok kullanışlı çok teşekkürler. Ayrıca ilgilendiğiniz içinde çok teşekkür ederim :)
||


Gündüz Can YILMAZ11 Mayıs 2010 Salı 01:11:57


Rica ederim, sorun kalmadığına inanın çok sevindim
||


mustafa özsarıoğlu28 Mayıs 2010 Cuma 21:18:20


hocam bu sayfalamayı bir türlü yapamadım vallaha billaha kanser oldum. SQL sorgusunu ve echo yazdırma kodlarımı versem siz sorguyu bu kodlara göre nasıl yapacağımı anlatırmısınız. ücretli destek veriyorsanız onada razıyım vallayi uykularım kaçıyor artık.
||


Gündüz Can YILMAZ28 Mayıs 2010 Cuma 23:27:00


Mustafa Bey, gönderdiğiniz kodları düzenleyip mailinize attım. Umarım sorun kalmamıştır. İyi çalışmalar
||




Yorumunuz