Autor Zpráva
Glumik
Profil *
Zdravim, mam nize uvedenou podminku pro vypis stranek a uz me z ni zacina pomalicku hrabat. :o)

if($i <= 20 || $i == $aktualniStranka || $i-1 == $aktualniStranka || $i+1 == $aktualniStranka || $i == $stranky-2 || $i == $stranky-1 || $i == $stranky){

/*
- vypise prvnich 20 stranek + 3 posledni stranky a ja potrebuji, aby to bylo pri: $aktualniStranka == '10' 1 ... 10 11 12 13 atd,
$aktualniStranka == '20' 1 ... 10 ... 20, 21, 22 atd,
$aktualniStranka == '30' 1 ... 10 ... 20 ... 30, 31, 32 atd,

apod.

Pomuzete me prosim nekdo?


*/
MzM
Profil
kdysi jsem něco takového psal, ale měl jsem tam jenom začátek a konec.
Na konci by mohlo být to samé, ne? tedy
1...10..20, 21, 22, 23, 24, 25,26,27,28,29...100...110...117

Je to použitelné? Nikde jsem to takhle neviděl. Ne, že by to nebyl zajímavý nápad, ale bude se tomu výrazně měnit délka a může to přetékat.

Bude to asi na víc jak jeden if.
- napsat jedničku
- pokud je x větší jak 2, tak...
- pokud je x větší jak desitky (nebo jinak určený modul), tak do aktuální stránky vypsat desítky oddělené ...
- vypsat n stránek od x do x+ stránek
- pokud je konec dál, tak dopsat moduly (desítky) oddělené ...
- vypsat poslední stránku

tak nějak bych to dělal.
Glumik
Profil *
MzM


1...10..20, 21, 22, 23, 24, 25,26,27,28,29...100...110...117

Takhle to bylo mysleno, proste nejprve zobrazit prvnich 20 t.j. + dalsi po 10 + konec a pak podle aktualni to stranky vypisovat, napr. budu na strance 101, takze vypisuji:

1 ... 10 ... 20 ... 30 ... 40 ... 50 ... 60 ... 70 ... 80 ... 90 ... 100, 101, 102, 103 atd + konec.

No kdyz budu chtit prohlizet stranky mezi 40-49, tak jednoduse jen kliknu na 40.

A podle meho nazoru tohle strankovani muze pracovat s desitkami tisicu zaznamu v db bez pretekani, nad stovky tisicu zaznamu mam uz rozbalovaci strankovani.
Glumik
Profil *
Nemuzete me prosim nekdo s timto pomoct?
bukaj
Profil
echo "1... ";

$x = 0;
if($aktualniStranka>=10){
do{
if($x>0){
echo $x . "... ";
}
$x+=10;
}while($x<$aktualniStranka && $aktualniStranka-$x>10);
}
for($y=$x; $y<$x+10; $y++){
if($y>1){
echo $y . ", ";
}
}
$x+=10;
while($x<$stranky){
echo $x . "... ";
$x+=10;
}
echo $stranky;


:)
MzM
Profil
Ano, tohle je pěkné řešení, ještě chce vyhytat začátky a konce. Ale pokud budeš mít 100 stránek dostaneš něco takového (pro stránku 50):
1... 10... 20... 30... 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50... 60... 70... 80... 90... 100

ale už pro 1000 stránek dostaneš:

1... 10... 20... 30... 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50... 60... 70... 80... 90... 100... 110... 120... 130... 140... 150... 160... 170... 180... 190... 200... 210... 220... 230... 240... 250... 260... 270... 280... 290... 300... 310... 320... 330... 340... 350... 360... 370... 380... 390... 400... 410... 420... 430... 440... 450... 460... 470... 480... 490... 500... 510... 520... 530... 540... 550... 560... 570... 580... 590... 600... 610... 620... 630... 640... 650... 660... 670... 680... 690... 700... 710... 720... 730... 740... 750... 760... 770... 780... 790... 800... 810... 820... 830... 840... 850... 860... 870... 880... 890... 900... 910... 920... 930... 940... 950... 960... 970... 980... 990... 1000

pro větší čísla to snad ani zkoušet nebudu. A to je to, o čem jsem mluvil. Nemyslím si, že je to dobrý nápad. Možná zavést nějakou logiku a více čísel vedle sebe prohnat přes nějaké logaritmické zobrazení. Pak to bude ale nechutně složité a nebude to plnit to, co to má.
Když se kdekoli rozhlédneš, tak zjistíš, že se stránkovače ustálili na
1...x,x+1, x+2...n (členů uprostřed může být, pochopitelně, více).
přechod na jiné stránky se řeší spíše vyhledáváním.
bukaj
Profil
MzM
podával jsem pouze řešení, které odpovídalo otázce ;)
MzM
Profil
bukaj, však jo, řešení je ok, nápad je ... eee ... podezřelý

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