Haz 12, 2009

php sayfalama

bir zamanlar yazmış olduğum dağınık sayfalama fonksiyonunu toparlayıp class haline getirdim.

Class :

<?php 
////////////////////////////////////////////////////
//                                                                                            	  
//	Code By İsmail Perim                                                 
//	http://www.ismailperim.net
//	<ismailperim@gmail.com>
//	
//	Dosya                : /sayfalama.php
//	Açıklama            : Sayfalandırma Sınıfı
//							
////////////////////////////////////////////////////
 
class Sayfalama
{
	public $KayitSayisi = 10;
	public $Sorgu = "";
	public $ToplamKayit = "";
	public $Linkler = "";
	public $Sayfa = "";
	public function Sayfalama($_Sorgu,$_TopKay,$_Sayfa,$_KayitSayisi=10)
	{
		$this->KayitSayisi = $_KayitSayisi;
		$this->Sorgu = $_Sorgu ;
		$this->ToplamKayit = $_TopKay;
		$this->Sayfa = $_Sayfa;
	}
	public function Olustur()
	{
 
			$adet=15;
 
			if($_GET['sayfa']==0)
			{
				$_GET['sayfa']=1;
				$sayfa=0;
				$kayit=0;
			}
			elseif($_GET['sayfa']==1)
			{
				$sayfa=0;
				$kayit=0;
			}
			else
			{
				$sayfa=$_GET['sayfa'];
				$kayit=($sayfa*$adet-$adet);
			}
 
			$sorgu_temp = $this->Sorgu."   LIMIT $kayit,$adet  ";
			$this->Sorgu=mysql_query($sorgu_temp);
 
			#######################   LİNKLER  #######################
			
					$sonraki=$_GET['sayfa']+1;
					$onceki=$_GET['sayfa']-1;
										if($onceki>0)
					{
						$this->Linkler.='<a href="?'.$this->Sayfa.'sayfa='.$onceki.' " style="text-decoration:none;"> [ Önceki ] </a>';
					}
					$say=$this->ToplamKayit;
					$link=ceil($say/$adet);
					$nokta=0;
					$nokta1=0;
					for($i=1;$i<$link+1;$i++)
					{
 
						if($i<$sayfa+6 && $i>$sayfa-6)
						{
							if((int)$sayfa==$i)
							{
								$this->Linkler.='<b>';
							}
 
							$this->Linkler.='<a href="'.$this->Sayfa.'sayfa='.$i.'" style="text-decoration:none;"> ['.$i.'] </a>';
 
							if((int)$sayfa==$i)
							{
								$this->Linkler.='</b>';
							}
 
						}	
						else
						{
							if( $i<$sayfa+6 && $nokta== 0)
							{
								$this->Linkler.=  '<a href="'.$this->Sayfa.'sayfa='.($sayfa-5).' " style="text-decoration:none;"> [ ... ] </a>';
								$nokta = 1;
							}	
							if( $i>$sayfa-6 && $nokta1== 0)
							{
								$this->Linkler.=  '<a href="'.$this->Sayfa.'sayfa='.($sayfa+5).' " style="text-decoration:none;"> [ ... ] </a>';
								$nokta1 = 1;
							}	
 
						}
					}
 
					if($sonraki<$link+1)
					{
						$this->Linkler.='<a href="'.$this->Sayfa.'sayfa='.$sonraki.' " style="text-decoration:none;"> [ Sonraki ] </a>';
					}
 
 
			#######################  / LİNKLER #######################
	}
}
 
 
 
?>

Örnek Kullanım :

////////////////////////////////////////////////////
//                                                                                            	  
//	Code By İsmail Perim                                                 
//	http://www.ismailperim.net
//	<ismailperim@gmail.com>
//	
//	Dosya                : /sayfalama_ornek.php
//	Açıklama            : Sayfalandırma Sınıfı Örneği
//							
////////////////////////////////////////////////////
 
# Sayfalama Sınıfımızı Ekliyoruz
include_once "sayfalama.php";
 
# MySQL Bağlantılarını Yaptığımız Sayfamız
include_once "baglanti.php";
 
# Toplam Kayıt Sayısını Alıyoruz.
$KayitSayisi = mysql_num_rows(mysql_query("SELECT * FROM Tablo"));
 
#Bir Sayfada Gösterilecek Kayıt Sayısı
$KacKayit = 15;
 
# Yeni Bir Sayfalama Sınıfı Türetiyoruz
$Sayfa = new Sayfalama("SELECT * FROM Tablo ",$KayitSayisi,"index.php?Islem=KayitListe&",$KacKayit);
 
# Sınıfımız Gerekli İşlemleri Yaparak Sorguları Sayfalandırmaya Uygun Hale Getiriyor
$Sayfa->Olustur();
 
# Oluşan Sayfa Linklerini Ekrana Bastırıyoruz
echo $Sayfa->Linkler;
 
# Sayfalandırma Sonucu Uygun Hale Getirilen Sorgumuzu İşlemlerimiz İçin Kullanıyoruz.
while($Veri = mysql_fetch_array($Sayfa->Sorgu))
{
     #... İşlemlerimiz ... #
}
?>

5 Comments

  • önceikle merhabalar…program çok güzel olmuş…da bişiyi anlayamadım..işlemlerimiz demek le ne analtmak istediniz…söyleyebilir misiniz…teşekürler…

  • Merhabalar,
    Sayfalama sınıfının altındaki örnekte “işlemleriniz” diye belirttiğim kısımda, örneğin veritabanından gelen bir tabloyu ekrana yazdıracaksanız bu alanda ekrana yazdırma işlemleri gibi işlemleri yapan kodları yazmanız gerekiyor.

  • Sayın İsmail Perim Burdaki Kodlarda Eksiklikler Var Siz Baglantı.php Cekmisiniz Ama Onu Vermemissiniz Onuda Eklerseniz Tam Çalışır Duruma Gelir Bunda Hata Veriyor.

  • Merhabalar,
    Baglanti.php dosyasını, sizin tarafınızdan oluşturulmuş MySQL Veritabanı bağlantı işlemlerini içeren sayfayı temsilen örnekte gösterdim. Bu sayfa içinde sizin veritabınız ile uygulamanız arasında bağlantıyı sağlayan kodların bulunması gerekiyor.
    Projelerimde kullandığım örnek bir bağlantı sayfası : Baglanti.php

  • İyi günler.Aşağıdaki kodlarla popüler 100 dosyayı gösteriyorum.Ve en popüler dosyaları 20 sayfa şeklinde sayfalamak istiyorum yardımcı olursanız sevinirim…

    = $gb){
    $mysizes = sprintf (“%01.2f”,$served/$gb) . ” Gb “;
    } elseif ($served >= $mb) {
    $mysizes = sprintf (“%01.2f”,$served/$mb) . ” Mb “;
    } elseif ($served >= $kb) {
    $mysizes = sprintf (“%01.2f”,$served/$kb) . ” Kb “;
    } else{
    $mysizes = $served . ” B “;
    }
    $content .= “  $totalfiles: $files  $totalcategories: $cats  $totaldownloads: $total_hits  İndirilen Veri: $mysizes“;

    if ($usemarquee == 1) {
    $content .= “”;
    }

    // Lets show the most downloaded files, Probably the porn ones i reckon, hahahahahahaha
    $content .= ““.$most.”“;
    $a = 1;
    $result = mysql_query( “SELECT id, name, downloads FROM mkp_download WHERE validate = ’1′ ORDER BY `downloads` DESC LIMIT $downloadstoshow”);
    while(list($id, $name, $downloads) = mysql_fetch_row($result)) {
    $title2 = ereg_replace(“_”, ” “, $name);
    $content .= “  $a- siteurl/index.php?ind=downloads&op=entry_view&iden=$id$title\”>$title2 : ($downloads) “;
    $a++;

    }
    unset($maxshow);
    unset($mysql_query);
    unset($id);
    unset($name);
    unset($downloads);
    ?>

Leave a comment