Avatar billede gat Nybegynder
07. januar 2004 - 08:33 Der er 6 kommentarer og
1 løsning

lidt avanceret paging

hej vil gerne have lidt paging på en side.

problemet er at der i tabellen er så mange records at det bliver rimelig mange side-links der bliver vist. Løsningen mener jeg kunne være, at man kun viste sidelink 1-10 -> 10-20 osv. altså som:

1 | 10 | 20 | 30 31 32 33 34 35 36 37 38 39 40 | 50 | 60

osv.

håber i kan se systemet.

vi kan bare tage udagangspunkt i delfs paging.
if (!isset($s)) {
    $s = "0"; // start
}
$page = 1;
for($start=0; $total > $start; $start=$start+$pr_side){
if ($start != $s) {
        echo "<a href='?s=$start'>$page</a> ";   
} else {
        echo "$page "; 
}
$page++;

håber i kan hjælpe
PL
Avatar billede 7th Praktikant
07. januar 2004 - 08:41 #1
Jeg ved ikke helt hvordan jeg skal forklare dig det, men "tricket" består i variablen $s, som bestemmer hvilke sider som skal vises.

I din SQL-sætning bestemmer du, at der kun skal vises 10 records af gangen.

Det vil sige, hvis ikke er defineret, så $s = 1, og så vises fra side 1 til 10. Hvis $s er defineret, bestemmes sidevisning ud fra værdien af $s. Hvis for eksempel $s er lig med 20, så vises fra side 20 til 30.

Desværre kan jeg ikke helt gennemskue hvad det er du prøver på. Mit råd er, at læse delfs' gode artikel igen suppleret med denne http://www.ebruger.dk/artikler/artikel.asp?artikelID=19
Avatar billede 7th Praktikant
07. januar 2004 - 08:43 #2
Det vil sige, hvis ikke $s er defineret, så $s = 1, og så vises fra side 1 til 10. Hvis $s er defineret, bestemmes sidevisning ud fra værdien af $s. Hvis for eksempel $s er lig med 20, så vises fra side 20 til 30, da du i din SQL-sætning har sat records til at være 10. Altså 20 + 10 er hvortil sidevisning strækker sig til.
Avatar billede eagleeye Praktikant
07. januar 2004 - 09:28 #3
Du kan finde hvilken side du er på og så først skrive 10 20 30 før den du er ved og så udskrive x1 x2 x3 x4 x5 x6 x7 x8 x9 ved den 10'er du er ved og til sidst skrive 40 50 60 70 ...:

Her lidt at rode med:


if (!isset($s)) {
    $s = "0"; // start
}
$antal_sider = ceil($total/$pr_side);
$on_page = $s/$pr_side+1;
$temp=10;
while ($temp < $on_page)
{
  $next_s = $temp * $pr_side;
  echo "<a href='?s=$next_s'>$temp</a>";
  $temp += 10;
}
$temp -= 10;
$stop_page = $temp += 10;
if ($stop_page>$antal_sider) { $stop_page = $antal_sider; }
while ($temp <= $stop_page) {
  $next_s = $temp * $pr_side;
  if ($next_s != $s) {
    echo "<a href='?s=$next_s'>$temp</a>";
  } else {
    echo "$temp";
  }
  $temp += 1;
}
$temp += 10;
while ($temp <= $antal_sider) {
  $next_s = $temp * $pr_side;
  echo "<a href='?s=$next_s'>$temp</a>";
  $temp += 10;
}
Avatar billede sukos Juniormester
07. januar 2004 - 12:19 #4
Du kan osse prøve at lege lidt videre med detox's forslag her:

http://www.eksperten.dk/spm/408077
Avatar billede eagleeye Praktikant
07. januar 2004 - 21:20 #5
der var en del små fejl i det eks jeg vist så her er det igen:

Det kræver du har det total antal poster i variablen $total


if (!isset($s)) {
    $s = "0"; // start
}
$antal_sider = ceil($total/$pr_side);
$on_page = ceil($s/$pr_side)+1;
//udskriv side 1 for sig selv
if($s!=0) {
  $temp = 1;
  $next_s = ($temp-1) * $pr_side;
  echo "<a href='?s=$next_s'>$temp</a> ";
}
$temp=10;
$tmp = floor($on_page/10)*10;
// udskrive 10 20 30 før den valgt side
while ($temp < $tmp) {
  $next_s =($temp-1) * $pr_side;
  echo " <a href='?s=$next_s'>$temp</a> | ";
  $temp += 10;
}
$stop_page = $temp + 9;
if ($stop_page>$antal_sider) { $stop_page = $antal_sider; }
//udskriver 40 41 42 43 .. 49
while ($temp <= $stop_page) {
  $next_s = ($temp-1) * $pr_side;
  if ($next_s != $s) {
    echo "<a href='?s=$next_s'>$temp</a> ";
  } else {
    echo "$temp ";
  }
  $temp += 1;
}
//udskriver 50 60 ....
while ($temp <= $antal_sider) {
  $next_s = ($temp-1) * $pr_side;
  echo "<a href='?s=$next_s'>$temp</a> | ";
  $temp += 10;
}
Avatar billede gat Nybegynder
09. januar 2004 - 21:48 #6
tak for det eagleeye det virker næsten 100% som jeg ville have det nu er det bare lidt finjustering. smid et svar så får du dine velfortjente point
Avatar billede eagleeye Praktikant
09. januar 2004 - 22:54 #7
Ok her et svar ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester