Avatar billede mrfunder Nybegynder
21. juli 2008 - 02:09 Der er 10 kommentarer og
1 løsning

PHP/Mysql Paging funktion

Hej Eksperter.

Jeg har sammenstykket et script til brug i min paging funktion. Det virker sådan set efter hensigten, men jeg vil gerne lave det om således den printer resultatet anderledes:

< Forrige [3][4][5][6] [7] [8][9][10][11] Næste >

Altså således at den viser den nuværende side placering samt de 4 forrige og 4 næste, vælger man så en anden ændres resultatet selvfølelig efter denne.

Er der nogle der kan hjælpe mig med idé til hvordan det laves?

På forhånd tak :-)


$forum_threads = mysql_query("SELECT row FROM table LIMIT $offset, $views_page");

$side = $offset/$views_page +1;
$antal_sider = ceil(1 * $antal / $views_page);

if ($offset >= $views_page) {

    $forrige = $offset - $views_page;
    $go_back = "<a href='side.php?".$forrige."'> Forrige</a>";
}


if ($antal > $offset+$views_page) {
   
    $naeste = $offset + $views_page;
    $go_next = "<a href='side.php?".$naeste."'> Næste</a>";
}

$page_number = "Side ".$side." af " . $antal_sider;
                       
echo "".$page_number." ".$go_back." ".$go_next."";
Avatar billede mrfunder Nybegynder
21. juli 2008 - 02:18 #1
Jeg har tænkt mig at bygge på wagners system http://wagners.users.whitehat.dk/script/, jeg mangler bare en ledetråd til hvordan jeg siger max 5 sider den ene og den anden vej :)
Avatar billede coderdk Praktikant
21. juli 2008 - 07:44 #2
$startside = $side - 5;
if ( $startside < 1 )
{
  $startside = 1;
}
$slutside = $side + 5;
if ( $slutside > $antal_sider )
{
  $slutside = $antal_sider;
}

og så bare loope? Den kan så tweakes, så der altid er 10-11 sider :P
Avatar billede mrfunder Nybegynder
21. juli 2008 - 13:22 #3
Er det muligt du kan sammenstykke det i en fuld sammenhæng? Jeg er ikke helt sikker på hvorledes koden skal integreres
Avatar billede coderdk Praktikant
21. juli 2008 - 13:50 #4
Det er vel noget med at erstatte

$page_number = "Side ".$side." af " . $antal_sider;
                     
echo "".$page_number." ".$go_back." ".$go_next."";


med:


$startside = $side - 5;
if ( $startside < 1 )
{
    $startside = 1;
}
$slutside = $side + 5;
if ( $slutside > $antal_sider )
{
    $slutside = $antal_sider;
}
echo $go_back . " ";
for ( $i = $startside; $i < $slutside; $i++ )
{
  if ( $i == $side )
  {
      echo ' [ <b> ' . $i . ' </b> ] ';
  }
  else
  {
      echo ' [ <a href="side.php?s=' . $i . '"> ' . $i . ' </a> ] ';
  }
}
echo $go_next;
Avatar billede mrfunder Nybegynder
21. juli 2008 - 14:20 #5
Det virker umiddelbart godt det du har lavet, men den printer det lidt forkert:

Idet der er 15 sider, og vi er på side 8 vil den printe det således:

Forrige [ 3 ] [ 4 ] [ 5 ] [ 6 ] [  7  ] [ <b>8</b> ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] Næste

Altså printer den kun de næste 4 ud af 5 næste resultater.. og det jeg står på side 15, vil jeg stadig kunne trykke næste da der måske er et par ting at vise på sidste side (16), men den vil ikke fremgå af listen da der ikke er nok til at danne en HEL side.

Forstår du hvad jeg mener? :) jeg er måske lidt bøvlet
Avatar billede coderdk Praktikant
21. juli 2008 - 14:25 #6
for ( $i = $startside; $i < $slutside; $i++ )

ændres til

for ( $i = $startside; $i <= $slutside; $i++ )
Avatar billede coderdk Praktikant
21. juli 2008 - 14:25 #7
og set svar :)
Avatar billede mrfunder Nybegynder
21. juli 2008 - 14:35 #8
Perfekt løsning, jeg takker dig ærbødigt mange gange :-)
Avatar billede mrfunder Nybegynder
21. juli 2008 - 14:56 #9
Jeg er ked af at forstyrre igen, men jeg kan ikke få dette til at virke..

før havde jeg mit link via htacces, således det blev fint:

echo ' [ <a href="side.php/' . $antal_naeste_resultater . '"> ' . $i . ' </a> ] ';

Har prøvet at smidde $antal_naeste_resultater = $offset + $views_page; ind i min for{
men det virker bare ikke- kan du sige mig hvad jeg gør galt? (ved godt spg. er lukket)
Avatar billede mrfunder Nybegynder
21. juli 2008 - 15:08 #10
nvm.. jeg fandt ud af det :) endnu engang tak
Avatar billede coderdk Praktikant
21. juli 2008 - 15:16 #11
hehe ok - du spørger bare hvis der er noget :)
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