Stránkování – generování odkazů
- batneby
- Člen | 18
Dobrý den,
pokouším se udělat stránkování ale zasekl jsem se u jedné věci,
všechno my funguje ale nechtěj se my generovat linky pro další a předchozí
stránky. Linky generuji takto:
function PreviousAll()
{ // BEGIN function Previous
$previousall = $paginator->page - "1";
echo $previousall;
} // END function Previous
function NextAll()
{ // BEGIN function Next
$nextall = $paginator->page + "1";
echo $nextall;
} // END function Next
Pro představu sem raději dám celý kód:
$count = dibi::query('SELECT COUNT(*) FROM [iconomy]')->fetchSingle();
$paginator = new Nette\Utils\Paginator;
$paginator->setItemCount($count); // celkový počet položek (např. článků)
$paginator->setItemsPerPage(5); // počet položek na stránce
$paginator->setPage($page); // číslo aktuální stránky, číslováno od 1
$result = dibi::query('SELECT * FROM [iconomy] %lmt %ofs', $paginator->length, $paginator->offset);
if ($all = $result->fetchAll())
foreach($all as $row)
{
echo "<tr>";
echo "<td><span class=\"th\">".$row->id."</span></td>";
echo "<td><span class=\"th-img\"><img src=\"api/HeadSkin.php?mc=".$row->username."&px=50\"></span></td>";
echo "<td><span class=\"th\">".$row->username."</span</td>";
echo "<td><span class=\"th\">".$row->balance."</span</td>";
echo "</tr>";
}
function PreviousAll()
{ // BEGIN function Previous
$previousall = $paginator->page - "1";
echo $previousall;
} // END function Previous
function NextAll()
{ // BEGIN function Next
$nextall = $paginator->page + "1";
echo $nextall;
} // END function Next
if ($paginator->pageCount > 1) {
echo "<ul class=\"pure-paginator\">";
if ($paginator->isFirst()) {
echo "<li><span class=\"pure-button prev pure-button-active\">«</span></li>";
}
else {
echo "<li><a class=\"pure-button prev\" href=\"".PreviousAll()."\">«</a></li>";
}
if ($paginator->isLast()) {
echo "<li><span class=\"pure-button next\">»</span></li>";
}
else {
echo "<li><a class=\"pure-button next pure-button-active\" href=\"".NextAll()."\">»</a></li>";
}
echo "</ul>";
}
Snad se v tom vyznáte :).
Budu rád za každou radu, děkuji.
- batneby
- Člen | 18
martinit napsal(a):
Můžeš se inspirovat zde:
https://componette.org/search/?…
Ano ale to je pro starou verzi nette a linky tam jsou generovány v systému šablon já to potřebuju generovat v PHP.
- David Matějka
- Moderator | 6445
proc to potrebujes generovat takhle hnusne a nemuzes pouzit visual paginator?
krom toho, v tech fcich opravdu nemuzes takhle sahnout
na $paginator
- David Matějka
- Moderator | 6445
mel by byt jen problem v importech, zus tuhle upravenou verzi, snad je ok..
- batneby
- Člen | 18
Úplně jsem se v tom ztratil můžeš my sem prosím hodit kód na to
generováni příspěvků?
Myslím tenhle:
$count = dibi::query('SELECT COUNT(*) FROM [iconomy]')->fetchSingle();
$paginator = new Nette\Utils\Paginator;
$paginator->setItemCount($count); // celkový počet položek (např. článků)
$paginator->setItemsPerPage(5); // počet položek na stránce
$paginator->setPage($page); // číslo aktuální stránky, číslováno od 1
$result = dibi::query('SELECT * FROM [iconomy] %lmt %ofs', $paginator->length, $paginator->offset);
if ($all = $result->fetchAll())
foreach($all as $row)
{
echo "<tr>";
echo "<td><span class=\"th\">".$row->id."</span></td>";
echo "<td><span class=\"th-img\"><img src=\"api/HeadSkin.php?mc=".$row->username."&px=50\"></span></td>";
echo "<td><span class=\"th\">".$row->username."</span</td>";
echo "<td><span class=\"th\">".$row->balance."</span</td>";
echo "</tr>";
}
Ale předělaný do toho visual paginatoru.
- David Matějka
- Moderator | 6445
nejlehci to budes mit, kdyz si to zprovoznis kompletne s presenterema atd. nebo si myslis, ze se nette vytvorilo, abychom mohli psat aplikace co nejkomplikovaneji? :)
Editoval matej21 (3. 1. 2014 0:02)
- Pavel Macháň
- Člen | 282
batneby napsal(a):
Jenže já vůbec nevím jak to s těma presenterema udělat, ani pořádně nevím co to je. Proto to chci udělat takhle aby jsem to už měl hotoví.
Raději si najdi 1 den čas na prostudování a rovnou to udělej s prezenterama a šablonama. Sice zabiješ čas studiem, ale milionkrát se ti to vrátí. Místo hodiny datlení napíšeš pár řádků a můžeš jít ven na pivo.
EDIT: můžeš mrknout třeba na https://github.com/nette/sandbox a na něm si to otestovat
Editoval EIFEL (3. 1. 2014 0:12)
- batneby
- Člen | 18
Aha tak jsem si něco málo přečetl, samozřejmě to ještě všechno nastuduji ale rozhodl jsem se že tuto aplikaci do prezenteru dávat nechci chci to nechat generovat pomocí echo. Vím že je to dost divné ale po uvažování sem se rozhodl že by sem chtěl tuto aplikaci udělat pomocí jednoduchého PHP :).