<?php
//parametry construktora (tablica wyników do zliczenia array [wynik zwrócony po zapytaniu SELECT tego co chcemy stronicować]), GET odpowiedzialny za numer strony np $_GET['nrpage'],
//to co będzie wrzucone do linków np 'index.php?action=showPage&showPageNr=', ilość wyświetleń wyników na stronie jaką chcemy udostępnić użytkownikowi [opcjonalnie] domyślnie 10,
//ile linków ma być wyświetlonych przed i po stronie widocznej np 1,2,3 [4] 5,6,7 czyli 3 po jednej i 3 po drugiej (jako parametr 3 właśnie) domyślnie 3)
//metoda pagination zwraca 4 właściwości -numer dla którego zaczniemy wyświetlanie, ilość wyśwetlanyc rekordów, łączną ilośćwyników, wyświetlane linki
class pagin {
protected $all;//tablica z wynikami dla zliczenia
public $aUsPage = 0;//numer rekordu od którego zaczniemy wyświetlanie (dla LIMIT A)
public $iloWyswUs;//ilość którą chcemy wyświetlić na stronie (dla LIMIT B)
public $resIlWyn;//łączna ilość wyników
public $podStronyUs;//wyświetlenie linków do podstron paginacja
protected $getPage;//pobrany z paska URL numer podstrony
protected $urlGet;//url dla linków podstron
protected $ilLink;//ilość linków przed i po stronie wyświetanej
public function __construct($ALL, $GETPAGE, $URLforLINK, $ILWYSW = 10, $ILLINK = 3){
$this->all = $ALL;
$this->resIlWyn = count($ALL); $this->getPage = $GETPAGE;
$this->urlGet = $URLforLINK;
$this->iloWyswUs = $ILWYSW;
$this->ilLink = $ILLINK+1;
$this->pagination();
}//end construct
protected function pagination(){
if(is_array($this->all) && $this->resIlWyn > $this->iloWyswUs){
if($_POST['sub_pagin']){//obsługa dla formularza "Podaj numer strony"
if($_POST['number_pagin']!='' && is_numeric($_POST['number_pagin'])==true){ header("Location: ".$this->urlGet.$_POST['number_pagin']); }
}
/*pierwsza*/ if($this->getPage && $this->getPage>1) { $firstPage = '<a href="'.$this->urlGet.'1">1 </a>...';} else { $firstPage = false; }
/*ostatnia*/ $lPage = ceil(count($this->all)/$this->iloWyswUs); if($this->getPage != $lPage) { $lastPage = '... <a href="'.$this->urlGet.$lPage.'">'.ceil(count($this->all)/$this->iloWyswUs).'</a>';} else { $lastPage = false;} /*poprzednia*/ if($this->getPage && $this->getPage>1 && $this->getPage!='') { $prevPage = '<a href="'.$this->urlGet.($this->getPage-1).'"> prev </a>'; } else { $prevPage = false;}
/*następna*/ if($this->getPage<$lPage) { if(!$this->getPage){ $pPage = $this->getPage+2; } else { $pPage = $this->getPage+1;} $nextPage = '<a href="'.$this->urlGet.$pPage.'"> next </a>'; } else { $nextPage = false;}
$this->podStronyUs = $firstPage;
$this->podStronyUs .= $prevPage;
if(!$this->getPage){//dla i początkowego
$i1 = 1;
} else {
if($this->getPage <= $this->ilLink){
$i1 = 1;
} else {
$i1 = $this->getPage-$this->ilLink+1;
}
}
$ilAllStr = ceil(count($this->all)/$this->iloWyswUs+1
);//całkowita ilość podstron do wyśweitlenia if(!$this->getPage){//dla i końcowego
if($ilAllStr>$this->ilLink){
$ko = $i1+$this->ilLink;//domyślnie 3 pierwsze strony
} else {
$ko = $ilAllStr;//domyślnie 3 pierwsze strony
}
} else {
if($this->getPage+$this->ilLink<$ilAllStr){
$ko = $this->getPage+$this->ilLink;
} else {
$ko = $ilAllStr;
}
}
for($i=$i1;$i<$ko;$i++) {//pętla która wyświetla listę podstron z komentarzami
if($i == $this->getPage) { $aa = '<strong style="font-size: 110%;">'; $bb = '</strong>';} else { $aa = false; $bb = false;}
$this->podStronyUs .= ' <a href="'.$this->urlGet.$i.'">'.$aa.$i.$bb.'</a> ';
switch ($this->getPage) {
case ($i):
if($i == 1){
$this->aUsPage = 0;
} else {
$this->aUsPage = ($this->getPage - 1)*$this->iloWyswUs;
}
break;
}//end switch
}//end for
$this->podStronyUs .= $nextPage;
$this->podStronyUs .= $lastPage;
$this->podStronyUs .= '<form action="" method="post" style="float: right; margin-left: 4px;" title="Podaj numer strony"><input type="text" size="1" maxlength="4" name="number_pagin" /><input type="submit" name="sub_pagin" value=">" style="cursor: pointer;" /></form>';
}
}//end method pagination
}//end class pagin