webForumDet fria alternativet

Pagin

PHPur PHP

6 svar · 282 visningar · startad av Webslave

Medlem sedan maj 2002647 inlägg
Frågan#1

Jag har knåpat ihop följande kod och det fungerar helt perfekt:

<?PHP
$sql = "SELECT postID FROM forum_posts WHERE post_topicID = '".$_GET["topicid"]."'";
$result = mysql_db_query("$database","$sql");
$posts = mysql_num_rows($result);

$pages = ceil($posts/$ppp); // Räknar ut antalet sidor

if(empty($_GET["pagenumber"])){
  $currentpage=1;
}
else{
  $currentpage = $_GET["pagenumber"];
}
if($currentpage>$pages){
  $currentpage=1;
}

// Listar ut sidnummren
if(!($pages==1)){
  echo "<a href=\"?page=forum&forumid=".$_GET["forumid"]."&topicid=".$_GET["topicid"]."&pagenumber=1\" class=\"link_normal\"><-</a> ";
  for($i=1; $i<=$pages; $i++){
    if($i==$currentpage){
      echo "<span class=\"text\">[".$i."]</span> ";
    }
    else{
      echo "<a href=\"?page=forum&forumid=".$_GET["forumid"]."&topicid=".$_GET["topicid"]."&pagenumber=".$i."\" class=\"link_normal\">".$i."</a> ";
    }
  }
  echo "<a href=\"?page=forum&forumid=".$_GET["forumid"]."&topicid=".$_GET["topicid"]."&pagenumber=".$pages."\" class=\"link_normal\">-></a>";
}

// Räknar ut vart posterna ska börja räknas ut
if($currentpage==1){
  $start=0;
}
else{
  $start=$ppp*$currentpage-$ppp;
}
?>

Det jag nu undrar över (vilket har tagits upp tidigare men jag hittar inga poster som hjälper mig) hur jag ska göra för att bara visa 10 sidnummer åt gången... så att det inte blir för många sidnummer.
Några tips?

Medlem sedan sep. 20021 655 inlägg
#2

Antalet poster begränsar du genom SQL:
SELECT ... LIMIT start, max
där start är vilken rad du ska börja hämtningen, och max är antalet rader som ska hämtas med början ifrån start

Du kan titta här för att se hur du kan göra (titta på SQL-satsen som skrivs ut):
http://www.roslund.d2g.nu/mattias/php/friends.php

Medlem sedan maj 2002647 inlägg
#3

Det är ju det där som jag kan, det jag frågade efter var hur jag ser till att det inte visas mer än 10 sidnummer så att det inte visas t.ex sida 1-45... det skulle dra ut min tabell ganska ordentligt...

Medlem sedan sep. 20021 655 inlägg
#4

Jag är ledsen, men jag missförstod dig.

Ändra

for($i=1; $i<=$pages; $i++)

till

for($i=1; $i<=$pages && $i<11; $i++){
Medlem sedan maj 2002647 inlägg
#5

Men då tar det ju slut vid 10 och så blir det inget mer. Jag vill att det ska bli så att den räknar ut följande:
- Om antalet sidor är > 10 visa endast 5 sidnummer till vänster om nuvarande sida och fem till höger
Om nuvarande sida vore 6 så skulle det su ut så här:
1 2 3 4 5 [6] 7 8 9 10 11
men om nuvarande sida vore 1 skulle det se ut så här:
[1] 2 3 4 5 6
Några fler idéer?

Medlem sedan sep. 20021 655 inlägg
#6

Ok, få se om detta gör dig gladare:

Lägg till detta precis innan // Listar ut sidnummren

// Bestämmer vilket första sidnummer som ska visas
$pages_start = $currentpage-5;
if($pages_start<1){$pages_start=1;}

// Bestämmer vilket sista sidnummer som ska visas
$pages_end = $currentpage+5;
if($pages_end>$pages){$pages_end=$pages;}

och ändra for-satsen till följande:

for($i=$pages_start; $i<=$pages_end; $i++)
Medlem sedan maj 2002647 inlägg
#7

Tackar... nu funkar det ;)

131 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)