Paginátor (stránkování výsledků) v PHP
Paginátor je script napsaný v PHP pro vygenerování odkazů pro výpis většího množství položek na jednotlivé stránky.
Tento script byl napsán pro soutěž na ITnetwork a získal jako jeden ze
dvou placku "Machr na PHP", za toto ocenění velmi děkuji
Nechť je vám script k užitku.
Třída 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é spuštění je celkem jednoduché:
Parametry:
- Celkový počet záznamů
- Počet výpisů na stránku
- Počáteční výpis (číslo vycházející z rozsahu celkový počet/ počet výpisů na stránku)
- Jméno identifikátoru DIV
- Jméno proměnné v URL adrese "GET"
- Styl začátku a konce výpisu, 0 = čísla, 1 = šipky
Povinný je jen první parametr, další budou v případě jejich nepoužití nastavené z přednastavených hodnot.
require "paginator_class.php"; $vypis = new Paginator(1000,20,1,'vypis3','poz3'); // echo $vypis;
Těším se na reakce.
Galerie

Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 329x (2.34 kB)
Aplikace je včetně zdrojových kódů v jazyce PHP