PHP’de Sayfalama Sınıfı (Php Pagination Class)

Bu sınıf MySQL sorgu sonuçları için sayfalama bağlantılarını göstermek için kullanılabilir.

<?php
class pagination {
	var $totalPage;
	var $currPage;
	var $userURL;
	var $dataStart;
	var $limit;
	var $query;
	var $dbLink;
	var $adjacent;
	var $linkAdjacent=1;
	
	function pagination($userURL,$dbLink,$query,$limit,$pageNumber){
		$this->userURL=$userURL;
		$this->currPage=$pageNumber;
		$this->query=$query;
		$this->dbLink=$dbLink;

		$rs=mysql_query($query,$dbLink) or die("An error has occurred!");
		$numData=mysql_num_rows($rs);
		
		$this->totalPage=round($numData / $limit);
		$this->adjacent=intval($this->totalPage/4);
		
		$this->dataStart=(($limit*$pageNumber)-$limit);
		$this->limit=$limit;
	}
	
	function recordSet(){
		$query=$this->query . " LIMIT " . $this->dataStart . ", " . $this->limit . ";";
		$rs=mysql_query($query,$this->dbLink);
		return $rs;		
	}
	
	function pageLinkAdjacent($allow){
		$this->linkAdjacent=$allow;
	}
	
	function pageLink(){
		if (strpos($this->userURL, '&page')){
			$url = substr_replace($this->userURL,"",strpos($this->userURL, '&page'));
		}
		else {
			$url=$this->userURL;
		}
		
		$link="";
		
		for( $i=1; $i<=$this->totalPage; $i++ ){
			if( $i == $this->currPage ){
        		$link .= "<b>". ($i) ."</b>";
      		}
			else {
				if ($this->linkAdjacent==1){
					if ($this->totalPage>20 && $this->currPage<($this->adjacent*2)-3  && $i>($this->adjacent*2)-2 && $i<$this->totalPage-3){
						$i=($this->totalPage-3);
						$link .= "<label>. . .</label>";
					}
					if ($this->totalPage>20 && $this->currPage>=($this->adjacent*3)  && $i<($this->adjacent*3)-3 && $i>3){
						$i=($this->adjacent*3)-3;
						$link .= "<label>. . .</label>";
					}
					if ($this->totalPage>20 && $this->currPage>=($this->adjacent*2) && $this->currPage<($this->adjacent*3)  && $i<($this->adjacent*2)-2 && $i>2){
						$i=($this->adjacent*2)-2;
						$link .= "<label>. . .</label>";
					}	
					if ($this->totalPage>20 && $this->currPage>=($this->adjacent*2)-3  && $this->currPage<=($this->adjacent*3)-4 && $i>($this->adjacent*3)-2  && $i<$this->totalPage-2){
						$i=$this->totalPage-3;
						$link .= "<label>. . .</label>";
					}			
				}
				
				$link .= "<a href="". $url . "&page=" . ($i) . "">". ($i) ."</a>";				
			}				
		}
		
		if ($this->currPage != 1){
			$prev = "<a href="" . $url . "&page=" . ($this->currPage - 1) . "">". "<<" . "</a>";
			$link = $prev . $link;
		}

		if ($this->currPage != $this->totalPage){
			$next = "<a href="" . $url . "&page=" . ($this->currPage + 1) . "">". ">>" ."</a>";
			$link = $link . $next;
		}

		return $link;
		
	}

}
?>

One thought to “PHP’de Sayfalama Sınıfı (Php Pagination Class)”

  1. Ustam bu class ı sanırım sadece veritabanından listeleme yaptığımızda sayfalamak için kullanabiliyoruz.
    Bir de bir arama kriterine göre gelen sonuçları listelerken yapılabilecek sayfalama örneği vermeniz mümkünmü.
    Daha da özetlersek ilk liste sayfasını oluşturduğumuzda post veya get le gelen arama kriterini nasıl diğer sayfalarda da çalışır hale getiririz.
    Saygılar…

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir