21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
scratcher
Profil
Zdravim,
potreboval bych poradit se stránkováním, na stránkách ho již mám ve tvaru "zacatek | predchozi | stranka 2 z 19 | dalsi | konec"
potreboval bych jej ale upravit do tvaru "predchozi, 6,7,8,9,10, dalsi" s tim ze kdyz kliknu na predchozi zobrazi se "1,2,3,4,5,dalsi" a naopak kdyz kliknu na dalsi tak se zobrazi "predchozi,11,12,13,14,15,dalsi" a podobnym zpusobem by to ukazovalo i ostatni stranky.
jde vlastne o to ze kdyz kliknu na dalsi tak se tam ukaze dalsich 5 odkazu na stranky.
jedine co vim je celkovy pocet stranek a vim na jake aktualni strance se nachazim. Ale uz do toho koukam hroznou dobu a nemuzu prijit na to jak to udelat.
dikz za nakopnuti :)
peta
Profil
scratcher
No, dobry, a co jsi teda vymyslel?
Obvykle, kdyz strankujes, tak mas:
m = maximum polozem
n = aktualni polozka
c = pocet polozek na strance
a z toho prepocitavas ten zbytek
pocet stranek je potom svsech = round(m/c)+1
aktualni stranka s = round(n/c)+1
-5 stranek je nx = n-5*c
+5 stranek je nx = n+5*c
z aktualni stranky
nx = (s-5) *c
nx = (s+5) *c
Plus na vsechno omezujici podminky prekroceni m podteceni 0 a tak.
Nevim, co mas ty, ale jevi se mi to jednoduche z udaju, ktere mam ja.
scratcher
Profil
no takhle mi to vubec nefunguje. Pokud nemam vybranu stranku na ktere jsem tak je defaultne a=1, dalsi ma a=2 atd.
Potrebuji udelat aby kdyz budu na strance 1 az 5 byly zobrazeny odkazy na stranku 1 az 5 od 6te budou zas zobrazeny odkazy na stranky 6 az 10 atd.
jinak samozrejme znam pocet polozek na stranku, celkovy pocet polozek, celkovy pocet stranek a aktualni stranku (a).
hans
Profil *
Mám to udělané pro šablonový systém (striktně oddělené soubory PHP a HTML), takže si to budeš muset dát dohromady, ale snad to nebude tak složité.

Funkce newBlock vkládá HTML kód z šablony v BLOKU se stejným názvem
Funkce assign - výraz ve složených závorkách { } nahradí vypočtenou hodnotou
Block "hellip" vkládá jen tři tečky pro ozdobu :-)

jak to vypadá můžeš vidět tady
- klikni si na další čísla stránek (na konci řádku je poslední číslo - tedy počet stránek)

$pagenum = číslo stránky
$pages = počet stran
$url = adresa stránky

<?php
if($pagenum>1):
$bl1->newBlock("before");
$bl1->assign('URL',$url);
$bl1->assign('PAGEB', max(1,$pagenum-1));
endif;

if($pagenum-3>1):
$bl1->newBlock('hellip1');
endif;

for($i=max(1,$pagenum-4);$i<=min($pages,$pagenum+4);$i++)
{
$bl1->newBlock("page");
$bl1->assign('URL',$url);
$bl1->assign('PAGEX',$i);
if($i==$pagenum):
$bl1->assign('CLASS','red');
endif;
}

if($pages>=$i):
$bl1->newBlock('hellip2');
endif;

if($pagenum<$pages):
$bl1->newBlock("next");
$bl1->assign('URL',$url);
$bl1->assign('PAGEN', min($pages,$pagenum+1));
$bl1->assign('PAGEL', $pages);
endif;
?>


************
ŠABLONA HTML
************

<div class="paging">
Strana:
<!-- START BLOCK : before -->
<a href="{URL}pagenum=1" title="Přejít na první stranu výpisu">První</a>
<a href="{URL}pagenum={PAGEB}" title="Přejít na předchozí stranu">Předchozí</a>
<!-- END BLOCK : before -->

<!-- START BLOCK : hellip1 -->
&hellip;
<!-- END BLOCK : hellip1 -->

<!-- START BLOCK : page -->
<a href="{URL}pagenum={PAGEX}" title="Přejít na stranu {PAGEX}" class="{CLASS}">{PAGEX}</a>
<!-- END BLOCK : page -->

<!-- START BLOCK : hellip2 -->
&hellip;
<!-- END BLOCK : hellip2 -->

<!-- START BLOCK : next -->
<a href="{URL}pagenum={PAGEN}" title="Přejít na další stran">Další</a>
<a href="{URL}pagenum={PAGEL}" title="Přejít na poslední stranu seznamu">[{PAGEL}]</a>
<!-- END BLOCK : next -->
</div>
hans
Profil *
Oops, teď jsem si to přečetl pořádně a vidím, že tohle vlastně máš a chceš stránkovat trochu jinak, takže pardooon.
Cup
Profil
pokud chceš něco co je na této stránce na ůvodu dole http://hckridla.ic.cz/ tak se mi ozvy na icq mám to napsaný takovým docela neohrabaným způsobem ale jestli chceš tak ti to pošlu ... dej klindě vědět
scratcher
Profil
no vypada to docela dobre.
peta
Profil
znam
n = pocet polozek na stranku
m = celkovy pocet polozek
s_vse = celkovy pocet stranek
s = aktualni stranku (1 az s_vse)
1 az 5
od = round((s-1)/5);
predchozi=od, od+1, od+2, od+3, od+4, od+5, dalsi=od+6
Ja na tom nevidim nic tezkeho?
Jen si musis opet pohlidat, aby se predchozi zobrazilo, kdyz je od>0 nebo spise >5 .

Je to v podstate podobny princip jako strankovani samotne, akorat misto pole seznam_zaznamu strankujes pole seznam_stranek
scratcher
Profil
Peta
Muzes mi pls poradit jak potom vypsat odkazy na dalsi stranky? at delam co delam tak bud mi to vypise vsechny odkazy najednou (na vsechny stranky).
diky

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0