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>
Yorum Yap