PHP Sayfa Listeleme

İster site arka tarafı olan yönetim paneli olsun, ister site ön tarafı olan kullanıcı tarafında olsun, hemen hemen her sitenin en az bir yerinde kullandığımız listeleme işlemiyle alakalı kullandığım CLASS yapısını örnekle paylaşacağım.

Kullandığım CLASS yapısı, CLASS kullanım örneği, MySQL sorgusundaki işlem ve sayfada listelenme şekline ait örnekler aşağıdadır.

CLASS Yapısı

<?php
CLASS PAGINATION
{
 var $total_pages = 0; // Toplam veri
 var $targetpage = ""; // Hedef veri
 var $limit = "20"; // Limit
 var $page_string = "page"; // Değişken adı
 var $page = 0; // Sayfa
 var $adjacents = 3; // Yan yana kaçarlı olsun

function run(){
 if($this->page)
 $this->start = ($this->page - 1) * $this->limit; //Bu sayfaya göre başlangıç sayısı
 else
 $this->start = 0;

if ($this->page == 0) $this->page = 1; //Sayfa yoksa varsayılan 1 değeri ile başlar
 $this->prev = $this->page - 1; //Önceki sayfa değeri -1
 $this->next = $this->page + 1; //Sonraki sayfa değeri + 1
 $this->lastpage = ceil($this->total_pages/$this->limit);//Son sayfa değeri hesaplanması
 $this->lpm1 = $this->lastpage - 1; //Son sayfadan önceki sayfa
 $this->show();
 }

function show(){
 $this->pagination = "";
 if ( $this->lastpage > 1) {
 //önceki değer
 if ($this->page > 1)
 $this->showArray['pre'] = "<a href=\"$this->targetpage&$this->page_string=$this->prev\">Önceki</a>";
 else
 $this->showArray['pre'] = "<a href='#'>Önceki</a>";

//sayfalar
 if ($this->lastpage < 7 + ($this->adjacents * 2))
 {
 for ($counter = 1; $counter <= $this->lastpage; $counter++)
 {
 if ($counter == $this->page)
 $this->showArray['now'][] = '<a href="#">'.$counter.'</a>';
 else
 $this->showArray['now'][] = "<a href=\"$this->targetpage&$this->page_string=$counter\">$counter</a>";
 }
 }
 elseif($this->lastpage > 5 + ($this->adjacents * 2))
 {

if( $this->page < 1 + ($this->adjacents * 2) ){
 for ($counter = 1; $counter < 4 + ($this->adjacents * 2); $counter++)
 {
 if ($counter == $this->page)
 $this->showArray['now'][] = '<a href="#">'.$counter.'</a>';
 else
 $this->showArray['now'][] = "<a href=\"$this->targetpage&$this->page_string=$counter\">$counter</a>";
 }
 $this->showArray['now'][] = "...";
 $this->showArray['now'][] = "<a href=\"$this->targetpage&$this->page_string=$this->lpm1\">$this->lpm1</a>";
 $this->showArray['now'][] = "<a href=\"$this->targetpage&$this->page_string=$this->lastpage\">$this->lastpage</a>";
 }
 elseif($this->lastpage - ($this->adjacents * 2) > $this->page && $this->page > ($this->adjacents * 2))
 {
 $this->showArray['now'][] = "<a href=\"$this->targetpage&$this->page_string=1\">1</a>";
 $this->showArray['now'][] = "<a href=\"$this->targetpage&$this->page_string=2\">2</a>";
 $this->showArray['now'][] = "...";
 for ($counter = $this->page - $this->adjacents; $counter <= $$this->page + $this->adjacents; $counter++)
 {
 if ($counter == $this->page)
 $this->showArray['now'][] = '<a href="#">'.$counter.'</a>';
 else
 $this->showArray['now'][] = "<a href=\"$this->targetpage&$this->page_string=$counter\">$counter</a>";
 }
 $this->showArray['now'][] = "...";
 $this->showArray['now'][] = "<a href=\"$this->targetpage&$this->page_string=$this->lpm1\">$this->lpm1</a>";
 $this->showArray['now'][] = "<a href=\"$this->targetpage&$this->page_string=$this->lastpage\">$this->lastpage</a>";
 }
 else
 {
 $this->showArray['now'][] = "<a href=\"$this->targetpage&$this->page_string=1\">1</a>";
 $this->showArray['now'][] = "<a href=\"$this->targetpage&$this->page_string=2\">2</a>";
 $this->showArray['now'][] = "...";
 for ($counter = $this->lastpage - (2 + ($this->adjacents * 2)); $counter <= $this->lastpage; $counter++)
 {
 if ($counter == $this->page)
 $this->showArray['now'][] = "<span class=\"current\">$counter</span>";
 else
 $this->showArray['now'][] = "<a href=\"$this->targetpage&$this->page_string=$counter\">$counter</a>";
 }
 }
 }

//sonraki değer
 if ($this->page < $counter - 1)
 $this->showArray['next']= "<a href=\"$this->targetpage&$this->page_string=$this->next\">Sonraki</a>";
 else
 $this->showArray['next'] = "<a href='#'>Sonraki</a>";
 }
 }

}

$P = new PAGINATION();

Örnek kullanım şekli:

<?php
$P->total_pages = 20; // Toplam Kayıt Sayısını Verdiğiniz Değer
$P->limit = 10; // Sayfada gösterilecek kayıt sayısı
$P->page = isset($_GET['page']) ? $_GET['page'] : 0; // Eğer sayfa değeri tanımlıysa gelen değer yoksa varsayılan değer 0
$P->targetpage = '?islem=siparisler'; // Sayfalamadaki linklere tıklanınca gidecek adres
$P->run(); // Sayfalamanın oluşturulması
?>

CLASS yapısına göre MySQL sorgusuna ait kullanım şekli

$query = 'SELECT * FROM siparisler WHERE 1 LIMIT '.$P->start.','.$P->limit;';

Sayfada Gösterilmesi

<ul>
 <?php if ( $P->showArray['pre'] ){?>
 <li class="prev <?php if ( strpos($value, '#') !== FALSE ){ echo 'disabled';}?>"><?php echo $P->showArray['pre']?></li>
 <?php } ?>
 <?php foreach ( $P->showArray['now'] as $key => $value ){ ?>
 <li <?php if ( strpos($value, '#') !== FALSE ){ echo 'class="active"';}?>>
 <?php echo $value;?>
 </li>
 <?php } ?>
 <?php if ( $P->showArray['next'] ){?>
 <li class="next <?php if ( strpos($value, '#') !== FALSE ){ echo 'disabled';}?>"><?php echo $P->showArray['next']?></li>
 <?php } ?>
</ul>

Paylaş: