[ 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....