[ Milan M. Radovic @ 26.04.2004. 23:13 ] @
| Skripta cita iz array redove za fajl,ali kako ih npr.ima hiljadu,ne mogu da ih prikazem na jednoj strani .html...ne daj boze?
Kako uraditi [Prethodna strana] [1] [2] [3] [Sledeca strana] sistem?
Probao sam nesto i uspeo ali cas ih bude deset po strani,cas 9,cas 11.
Dajte mi please primer koda... |
[ BobMarley @ 27.04.2004. 12:45 ] @
ako iams 1004 stvari a oces npr 10 po strani
1000 podelis sa 10 i imas broj koliko ce ti strana biti i samo parsujes poslje na html
za slucaj da ti ostane ostatak kao sto je kod 1004 uvijek dodaj +1 na rezultat djeljenja.
[ cabrilo @ 04.06.2004. 19:31 ] @
Pa, nije bas tako lako. Evo kakav bih ja algoritam napravio:
prvo saznas duzinu niza, tj. nesto tipa:
$array_length = scalar (@array);
(gde je @array array koji ti drzi te podatke).
Onda se odlucis koliko hoces redova po stranici ($redova). Sad, posto je u perlu zeznuto zaokruziti broj (ili meni barem ne pada na pamet bilo sta, uradis ovo)
$temp = $array_length % $redova;
To ce ti vratiti ostatak deljenja. Onda:
$broj_strana = ($array_length - $temp) / $redova + 1.
Odatle imas broj strana koje ti trebaju. Sada, da bi to iskoristio, uvek skriptu daj argument $broj_strana i stranu koju treba prikazati ($i). Tako, npr. imas:
print "<a href="skript.cgi?0,$broj_strana">[Pocetak]</a>"; # Ovo je link na prvu stranu
$i = 1;
while ($i < ($broj strana - 1))
{
print "<a href="skript.cgi?$i,$broj_strana">[$i]</a>"; # Ovo su sve strane izmedju prve i poslednje... $i je broj strane na koju se ide
}
print "<a href="skript.cgi?$broj_strana,$broj_strana">[Kraj]</a>"; # Ovo je poslednja stranica
Onda na kraju, namesti da ti skript uvek uzima ta dva argumenta ($broj_strana i $i). $broj strana ti treba za gornju while petlju, a $i da istampas odgovarajuce redove za trenutnu stranu.
npr.
$pocetak = $i * $redova; # Tako, npr. ako si rekao da ce biti 10 redova po strani, a trenutno si na trecoj strani, on ce krenuti da broji od 30... mada bi trebalo od dvadeset... to vec sam doradi)
$kraj = $i * $redova + $redova; # Ovo ce biti kraj... znaci, 40
while ($pocetak < $kraj)
{
print "@array[$pocetak]";
$pocetak++;
}
Reci ako ti nesto nije jasno....
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.