Mümkünse, görüşlerinizi almak isterim.
<?php
class sayfalama
{
public $bilgiler;
private $sayfalama = 10; // Altta kaç tane numara gözükecek.
public $altkod = "";
public function hesapla()
{
$this->sayfalama--;
$abx = ceil($this->bilgiler['toplam'] / $this->bilgiler['sfbasina']); // Toplam Sayfa Sayısı
$abx = ($abx>0)? $abx : 1;
$aby = ($this->bilgiler['sayfa']>=$this->sayfalama-ceil($this->sayfalama/4))?$this->bilgiler['sayfa']-($this->sayfalama/2):1;
$aby = ($this->bilgiler['sayfa']+ceil($this->sayfalama/2)<=$abx)?$aby:$abx-$this->sayfalama; //Sayfa Nereden Başlayacak?
$aby = ($aby>0)? ceil($aby) : 0;
$abz = ($abx>=$this->sayfalama)? $this->sayfalama:$abx; // Eğer $sayfalama dan küçük olursa veri, alt numaralandırma az olsun.
//Alt Kodu Oluşturmaya Gönderelim.
$this->kodolustur(($aby==0)?1:$aby, $aby+$abz,$this->bilgiler['sayfa'], $abx);
return $this->altkod;
}
private function kodolustur($baslangic,$bitis,$kacinci, $topsayfa)
{
$dx = explode("[num]",$this->bilgiler['sablon']);
for($x=$baslangic;$x<=$bitis;$x++)
{
$this->altkod.= ($x==$baslangic and $x!=1)?' [ <a href="'.$dx[0].'1'.$dx[1].'"> << </a> ] [ <a href="'. $dx[0].($kacinci-1).$dx[1] .'"> < </a> ] ':"";
$this->altkod.= ($x==$kacinci)? " <b>".$x."</b>": ' [ <a href="'. $dx[0].$x.$dx[1] .'"> '.$x.' </a> ] ';
$this->altkod.= ($x==$bitis and $x!=$topsayfa)?' [ <a href="'. $dx[0].($kacinci+1).$dx[1] .'"> > </a> ] [ <a href="'.$dx[0].$topsayfa.$dx[1].'"> >> </a> ]':"";
}
}
}
$sayfala = new sayfalama();
$sayfala->bilgiler = array( 'sayfa' =>2,
'toplam' =>150,
'sfbasina' =>10,
'sablon' =>"/sayfa[num].html");
echo $sayfala->hesapla();
?>Rev 1: 04.07.2013 - Hesaplama hataları düzeltildi..
Rev 2: 05.07.2013 - Ekrana basım için $sayfala->altkod yerine hesapla ile işlem halledildi. << ve >> butonları dahil edildi. (ilk ve son). Öneri için teşekkürler @Bilgikar
Rev 3: 05.07.2013 - $sayfa; $toplam; $sfbasina; $sablon; değişkenleri $bilgiler dizisine yüklendi ve değişken sayısı azaltıldı.
