Avatar billede jacks222 Nybegynder
30. januar 2010 - 18:23 Der er 1 løsning

Pænere paging-navigation (via limit fra mysql db)

Pænere paging-navigation (via limit fra mysql db)

Jeg bruger dette til at danne frem og tilbage navigation:

<?php

$total_results = mysql_result(mysql_query("select count(*) as num from tester"),0);
$total_pages = ceil($total_results / $max_results);

if($page > 1)
{
  $prev = ($page - 1);
  echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$prev\">Previous</a> ";
}
else{
echo "Previous ";
}


if($total_results > 60){
for($i = 1; $i <= $total_pages; $i++){
    if(($page) == $i){
        echo "$i ";
        } else {
            echo "<a href=\"".$_SERVER['PHP_SELF'].

"?page=$i\">$i</a> ";
    }
}
}


if($page < $total_pages)
{
    $next = ($page + 1);
    echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$next\"> Next</a>";
}


?>

--------

Det virker fint nok, men der bliver dannet en farlig masse enkelte sidetal e.g. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 etc pga denne:

if($total_results > 10){
for($i = 1; $i <= $total_pages; $i++){
    if(($page) == $i){
        echo "$i ";
        } else {
            echo "<a href=\"".$_SERVER['PHP_SELF'].

"?page=$i\">$i</a> ";
    }
}
}

Kan man lave det om således at den altid kun viser 7 tal som dette:

Previous 1, 2, 3, 4, 5, 6, 7 Next

Og hvis der så tykkes på 7 så bliver det:

Previous 7, 8, 9, 10, 11, 12, 13 Next

Og hvis der så tykkes på 13 så bliver det:

Previous 13, 14, 15, 16, 17, 18, 19 Next

Og hvis der så tykkes på 15 så bliver det:

Previous 15, 16, 17, 18, 19, 20, 21 Next

Osv. Altså så det valgte tal står først og kun med de 6 efter efterfølgende tal bagefter.
Avatar billede jacks222 Nybegynder
30. januar 2010 - 22:13 #1
Tror det lykkes:
----------------

$total_results = mysql_result(mysql_query("select count(*) as num from linksactive"),0);
$total_pages = ceil($total_results / $max_results);

if($page > 1)
{
  $prev = ($page - 1);
  echo "<a href=\"".$_SERVER['PHP_SELF']."?page=1\">First</a> | <a href=\"".$_SERVER['PHP_SELF']."?page=$prev\">Previous</a> ";
}
else{
echo "First | Previous ";
}


if($total_results > 60){
for($i = 1; $i <= $total_pages; $i++){
  if(($page) == $i){
    echo "$i ";
    }
    elseif($i <= $total_pages && $i > $page && $i < $page+7) {
    echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$i\">$i</a> ";
    }
    elseif($i > $total_pages - 7 && $i <= $page) {
    echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$i\">$i</a> ";
    }


  }
}


if($page < $total_pages)
{
    $next = ($page + 1);
    echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$next\"> Next</a> | <a href=\"".$_SERVER['PHP_SELF']."?page=$total_pages\">Last</a>";
}
else{
echo "Next | Last";
}
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