---
title: "Pagin"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/56403-pagin"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Webslave"
published: "2002-10-18T13:12:15.000Z"
updated: "2002-10-19T18:06:21.000Z"
replies: 6
views: 285
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/56403-pagin"
---

# Pagin

## #1 — Webslave, 2002-10-18T13:12Z

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

```php
<?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?

Permalänk: https://www.webforum.nu/p/56403

## #2 — dectgap, 2002-10-18T14:19Z

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>

Permalänk: https://www.webforum.nu/p/827020

## #3 — Webslave, 2002-10-18T14:51Z

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...

Permalänk: https://www.webforum.nu/p/827061

## #4 — dectgap, 2002-10-18T16:53Z

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

Ändra

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

till

```php
for($i=1; $i<=$pages && $i<11; $i++){
```

Permalänk: https://www.webforum.nu/p/827169

## #5 — Webslave, 2002-10-18T20:38Z

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?

Permalänk: https://www.webforum.nu/p/827386

## #6 — dectgap, 2002-10-19T00:11Z

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

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

```php
// 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:

```php
for($i=$pages_start; $i<=$pages_end; $i++)
```

Permalänk: https://www.webforum.nu/p/827494

## #7 — Webslave, 2002-10-19T18:06Z

Tackar... nu funkar det ;)

Permalänk: https://www.webforum.nu/p/827987

---

Tråden på webben: https://www.webforum.nu/amne/php/56403-pagin
