Witam. Zabawę z klasami zacząłem niedawno i chciałbym, żeby panowie ocenili czy ta poniższa jest cokolwiek warta.
<?php
class pager {
protected $sep = ' ';
protected $fpage = '|<';
protected $prev = '<';
protected $next = '>';
protected $epage = '>|';
public function __construct($id, $url){
$this -> id = $id;
$this -> url = $url;
}
public function rpp($rpp){
return false;
}
$this -> rpp = $rpp;
}
public function rpn($rpn){
return false;
}
$this -> rpn = $rpn;
}
protected function makeurl($page, $name, $title = ''){
$url = $this -> url;
if($title == ''){
$string = '<a href="'.$link.'">'.$name.'</a>';
} else {
$string = '<a href="'.$link.'" title="'.$title.'">'.$name.'</a>';
}
return $string;
}
public function nav($records){
$id = $this -> id;
$sep = $this -> sep;
$perpage = $this -> rpp;
$pernav = $this -> rpn;
$fpage = $this -> fpage;
$epage = $this -> epage;
$pages = ceil($records/$perpage);
if($_GET[$id] == '' or
!is_numeric($_GET[$id]) or
$_GET[$id] < 1 or
$_GET[$id] > $pages){ $page = 1;
} else {
$page = $_GET[$id];
}
if($page <= $pernav){
$start = 1;
$lratio = $pernav - $page + 1;
} else {
if($page > $pages - $pernav){
$start = $pages - $pernav - $pernav;
} else {
$start = $page - $pernav;
}
}
if($page > $pages - $pernav){
$end = $pages;
} else {
$end = $page + $pernav + $lratio;
}
if($page > $pernav + 1){
$nav .= $this -> makeurl(1, $fpage, 'Pierwsza strona').$sep;
}
if($page > 1){
$nav .= $this -> makeurl($page - 1, $prev, 'Poprzednia strona').$sep;
}
for($l = $start; $l < $page; $l++){
$nav .= $this -> makeurl($l, $l, 'Strona: '.$l).$sep;
}
for($r = $page; $r < $end+1; $r++){
if($r == $page){
$nav .= '<span>'.$r.'</span>'.$sep;
} else {
$nav .= $this -> makeurl($r, $r, 'Strona: '.$r).$sep;
}
}
if($page < $pages){
$nav .= $this -> makeurl($page + 1, $next, 'Następna strona').$sep;
}
if($page < $pages - $pernav){
$nav .= $this -> makeurl($pages, $epage, 'Ostatnia strona');
}
return $nav;
}
public function limit(){
$get = $this -> id;
$rpp = $this -> rpp;
$limit = $_GET[$get]*$rpp;
$this -> limit = $limit;
return $limit;
}
}
public function start(){
$limit = $this -> limit;
$rpp = $this -> rpp;
$start = $limit - $rpp;
return $start;
}
}
}
// Wywołanie klasy
$pager = new pager('page', './pager.php?page=#PAGE#');
$pager -> rpp(25);
$pager -> rpn(5);
$nav = $pager -> nav($records[0]);
$limit = $pager -> limit();
$start = $pager -> start();
$sql = mysql_query('SELECT * FROM table LIMIT '.$start.','.($limit - $start + 1
));
// ...
?>
Powód edycji: [erix] przeniosłem