Avatar billede pitzen Nybegynder
23. august 2006 - 12:44 Der er 5 kommentarer og
1 løsning

Dropdown-pageing problem!

Hey eksperter..

På min side http://www.humorfreak.dk/2/billeder.php har jeg noget pageing. "Næste" og "Forrige" virker perfekt. I bunden har jeg lavet en dropdown, hvor man kan springe blandt siderne. Den virker også efter hensigten. Dog kan man kun springe fremad. Hvor kan jeg gøre således at man også kan springe baglæns?

Følgende script er brugt:

echo"
<form name='site' id='menu' action=''>
";
$res = mysql_query("select * from billeder where cat=$cat and godkendt='1'");
$count = mysql_num_rows($res);
$morefrom = $from;
if($count>=16){
echo"
<select name='navi' size='1' onchange='location=document.site.navi.options[document.site.navi.selectedIndex].value;'>
<option selected='selected'>Gå til side</option>";
while($count>$morefrom+16){
$morefrom= $morefrom+16;
$to = $morefrom+16;
$cfrom = $morefrom++;
$cto = $to++;
echo"<option value='$PHP_SELF?cat=$cat&from=$morefrom'>$cfrom-$cto</option>";
}
}
else{
echo"<select name='navi' size='1' disabled>
<option selected='selected'>Gå til side</option>";
}
echo"
</select>
</form>

______________________________

Desuden vil jeg gerne have lavet det således, at man kan se hvor man er altså:

Side 1 (1-16)
Side 2 (17-32)
Side 3 (33-48)
>> Side 4 (49-64)
Side 5 (65-80)
Side 6 (81-96)
osv...

Håber i kloge hoveder kan hjælpe :D

Pf. tak!
Avatar billede Slettet bruger
23. august 2006 - 14:43 #1
Prøv dette

if($count>=16){
  $pages=intval($count/16);
  if($count%16 > 0) $pages++;

  echo"
<select name='navi' size='1' onchange='location=document.site.navi.options[document.site.navi.selectedIndex].value;'>
<option selected='selected'>Gå til side</option>";
  for($pagenum=1;$pagenum<=$pages;$pagenum++){
    $morefrom= ($pagenum-1)*16;
    $cto = $morefrom+16;
    $cfrom = $morefrom+1;
    if($pagenum==$pages && $count%16 > 0) $cto = $count%16;
    echo"<option value='$PHP_SELF?cat=$cat&from=$morefrom'>Side $pagenum ($cfrom-$cto)</option>";
  }
}
Avatar billede pitzen Nybegynder
23. august 2006 - 15:07 #2
Jeg har netop testet det, og det virker. Dog er der en fejl, hvis - der på sidste side - er færre end 16 billeder. Så skriver den Side 29 (49-4), som om den forsætter fra start af igen.

Kan du lave det sådan at man har ">>" foran den side man er på?
Avatar billede Slettet bruger
23. august 2006 - 15:13 #3
if($count>=16){
  $pages=intval($count/16);
  if($count%16 > 0) $pages++;

  echo"
<select name='navi' size='1' onchange='location=document.site.navi.options[document.site.navi.selectedIndex].value;'>
<option selected='selected'>Gå til side</option>";
  for($pagenum=1;$pagenum<=$pages;$pagenum++){
    $morefrom= ($pagenum-1)*16;
    $cto = $morefrom+16;
    $cfrom = $morefrom+1;
    if($pagenum==$pages && $count%16 > 0) $cto = $cto-16 + $count%16;
    if($morefrom==$from) $mark="&lt;&lt; ";
    echo"<option value='$PHP_SELF?cat=$cat&from=$morefrom'>{$mark}Side $pagenum ($cfrom-$cto)</option>";
  }
}
Avatar billede Slettet bruger
23. august 2006 - 15:15 #4
Rettelse:
    if($morefrom==$from) $mark="&lt;&lt; ";

skulle være
    if($morefrom==$from) $mark="&gt;&gt; ";
Avatar billede pitzen Nybegynder
23. august 2006 - 15:28 #5
Jeg takker og bukker! Mange tak!

Jeg nulstillede lige $mark efter echo'en... Ellers blev alle side derefter markeret.
Avatar billede Slettet bruger
23. august 2006 - 17:18 #6
Åhja. I stedet for at nulstille den bagefter, kunne man også have gjort således:

$mark = ($morefrom==$from) ? '&gt;&gt; ' : '';
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