Paginátor (stránkovanie výsledkov) v PHP
Paginátor je script napísaný v PHP pre vygenerovanie odkazov pre výpis väčšieho množstva položiek na jednotlivé stránky.
Tento script bol napísaný pre súťaž na ITnetwork a získal ako jeden z dvoch placku "Machr na PHP", za toto ocenenie veľmi ďakujem
Nech je vám script na úžitok.
Trieda scriptu:
<?php class Paginator { private $celkem; private $pocet; private $pozice; private $adresa; private $trida; private $roztec = 4; //vzdalenost od aktualni pozice -1 :o) private $zacatek; private $konec; /* první parametr = celkový počet záznamů druhý parametr = počet záznamů pro výpis třeti parametr = startovací stránka čtvrtý parametr = ID divu výpisu pro stylování v CSS patý parametr = nazev odkazu pro GET šestý parametr = styl zobrazení začátku a konce (0 = šipky, 1 = čísla) */ function __construct($c = 0, $p = 10, $z = 1, $t = 'paginator',$g = 'poz',$s = 0) { $this->celkem = $c; $this->adresa = $_SERVER['PHP_SELF']; $this->znak = "?"; $this->pocet = $p; $this->trida = $t; $this->g = $g; $this->rozsah = ceil($this->celkem / $this->pocet); $this->pozice = ((isset($_GET[$this->g]) and $_GET[$this->g]*1>0)?$_GET[$this->g]:(($z>$this->rozsah)?$this->rozsah:$z)); // zjisteni pozice z URL $this->zacatek = ($s == 0)?"<<":1; $this->konec = ($s == 0)?">>":$this->rozsah; } function __toString() { return "<div id='".$this->trida."'>\n".$this->adresa()."</div>\n"; } function odkaz($a,$n,$p) { return "\t".(($n == $p)?"<strong>$a</strong>":"<a href='{$this->adresa}{$this->znak}{$this->g}=$n'>$a</a>")."\n"; } public function adresa() { if($this->celkem == 0) return "\tNejsou zde žádné výpisy.\n"; if($this->celkem <= $this->pocet) return "\tZobrazeno všech {$this->celkem} výpisů.\n"; else { $v = ""; $s = ""; $p = $this->pozice; if($this->rozsah > ($this->roztec * 2)) { $s .= $this->odkaz($this->zacatek,1,$p); if(($p-1000)>0) $s.= $this->odkaz("-1000",$p-1000,$p); if(($p-100)>0) $s.= $this->odkaz("-100",$p-100,$p); if(($p-10)>0) $s.= $this->odkaz("-10",$p-10,$p); if($p-1>$this->roztec) $s .= "\t<span>...</span>\n"; for($a=1;$a<(2*$this->roztec);$a++) { $n = ($a+$p-((($p-1)<$this->roztec)?$p-1:($p<($this->rozsah-$this->roztec)?$this->roztec:$p-$this->rozsah+(2*$this->roztec)))); $s .= $this->odkaz($n,$n,$p); } if($p<($this->rozsah-$this->roztec)) $s.= "\t<span>...</span>\n"; if(($p+10)<$this->rozsah) $s.= $this->odkaz("+10",$p+10,$p); if(($p+100)<$this->rozsah) $s.= $this->odkaz("+100",$p+100,$p); if(($p+1000)<$this->rozsah) $s.= $this->odkaz("+1000",$p+1000,$p); $s .= $this->odkaz($this->konec,$this->rozsah,$p); } else for($a=1;$a<=$this->rozsah;$a++) $s.= $this->odkaz($a,$a,$p); return $s; } } } ?>
A samotné spustenie je celkom jednoduché:
parametre:
- Celkový počet záznamov
- Počet výpisov na stránku
- Počiatočné výpis (číslo vychádzajúce z rozsahu celkový počet / počet výpisov na stránku)
- Meno identifikátora DIV
- Meno premennej v URL adrese "GET"
- Štýl začiatku a konca výpisu, 0 = čísla, 1 = šípky
Povinný je len prvý parameter, ďalšie budú v prípade ich nepoužitia nastavenej z prednastavených hodnôt.
require "paginator_class.php"; $vypis = new Paginator(1000,20,1,'vypis3','poz3'); // echo $vypis;
Teším sa na reakcie.
Galéria
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 329x (2.34 kB)
Aplikácia je vrátane zdrojových kódov v jazyku php