---
title: "Paging"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/130059-paging"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "berget74"
published: "2005-06-16T06:56:40.000Z"
updated: "2005-06-23T07:20:52.000Z"
replies: 17
views: 466
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/130059-paging"
---

# Paging

## #1 — berget74, 2005-06-16T06:56Z

Skulle behöva hjälp med hur man fixar så att det går att spärra antalet sidor som visas på forumet. Idag läggs till det till en ny sida efter hand som inläggen uppkommer på formumet men skulle alltså vilja låsa det. Någon som kan hjälpa mig? Tacksam för alla hjälp!

                      \<?if ($antal_inlagg \> $antal) {
                        //############ Sidnavigering start ##################
                        if ($sida \> 1){
                          $sida1 = $sida-1;
                          echo '\<a href="?sida='.$sida1.'"\>\<b\>«\</b\>\</a\> \| ';
                        }
                        for ($i=1;$i\<$sidantal+1;$i++){
                          $e = $i;
                          while (strlen($e) \< strlen($sidantal)) { $e = "0".$e; }
                            if ($sida == $i) { echo "\<font color=\\"#000000\\"\>\[\<b\>$e\</b\>\]\</font\> "; } else { echo "\<a href=\\"?sida=$i\\"\>$e\</a\> "; }
                        }
                        if ($sida \<= $sidantal - 1){
                          $sida2 = $sida+1;
                          echo ' \| \<a href="?sida='.$sida2.'"\>\<b\>»\</b\>\</a\>';
                        }
                        //############ Sidnavigering slut ##################
                      }?\>

samt:

                        \<?$sida = $\_GET\["sida"\];            
                        if (!isset($sida)) { $sida = 1; }

                        $antal_inlagg = mysql_num_rows(mysql_query("Select forumID From mete_forum"));
  
                        $sidantal = ceil($antal_inlagg/$antal);
                        $start = ($sida\*$antal)-$antal;

                        $sql = mysql_query("SELECT datum,inlagg,namn,email FROM mete_forum Order By forumID desc LIMIT $start, $antal, $sida" $conn);

                        if ($antal_inlagg \> $antal) {
		          $pages = '\<br\>\<select class=arkiv name=links onChange="self.location.href=this.options\[this.selectedIndex\].value;"\>' . "\\n";
		          while ($cur_page++ \< $sidantal) {
			    $start_records = ($cur_page\*$antal)-($antal-1);
			    $end_records = $start_records+($antal-1);
			    if ($cur_page== $sida ) { $selected_page = ' selected'; } else { $selected_page = ''; }
			    $pages .= '\<option value="forum_sok.php?sida=' . $cur_page . '"' . $selected_page . '\>Inlägg ' . $start_records . '-' . $end_records . '\</option\>' . "\\n";
		          }
		          $pages .= '\</select\>' . "\\n";
                        }
                        echo $pages;?\>

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

## #2 — pettsson, 2005-06-16T16:35Z

Först och främst: Välkommen till wF!
Man göra det lite lättare för folk att hjälpa en genom att innesluta kod i \[ kod\] och \[ /kod\] block, då blir den mer lättläst.
Paging har det också frågats mycket om, pröva forumets utomordentliga sök-funktion. Hittar du inte något som hjälper dig, återkom då då finns det mängder av duktiga medlemmar som gärna hjälper till :)

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

## #3 — berget74, 2005-06-19T18:07Z

Tack! Har sökte igenom i flera timmar efter mitt problem innan jag bestämde mig för att skapa en ny tråd. 

Ska tänka på \[kod\] nästa gång.

Ingen som har lösningen på mitt problem?
Tacksam för all hjälp!

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

## #4 — aasah, 2005-06-21T15:00Z

Om du vill att nån ska kika på din kod, så lägg den inom \[ php\]-taggar (utan mellanslag mellan \[ och php). 

Annars har Kjell ett bra [skript](http://www.webforum.nu/showthread.php?s=&threadid=71581&forumid=151) som jag använder själv. :) 

Ett bra ställe att leta efter färdiga skript i är  [Skript - PHP](http://www.webforum.nu/forumdisplay.php?s=&forumid=151) vilket återfinns längst ner på samma sida som länken till detta PHP-forum. :)

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

## #5 — berget74, 2005-06-21T15:07Z

Bättre nu?

```php
<?if ($antal_inlagg > $antal) {
//############ Sidnavigering start ##################
if ($sida > 1){
$sida1 = $sida-1;
echo '<a href="?sida='.$sida1.'"><b>«</b></a> | ';
}
for ($i=1;$i<$sidantal+1;$i++){
$e = $i;
while (strlen($e) < strlen($sidantal)) { $e = "0".$e; }
if ($sida == $i) { echo "<font color=\"#000000\">[<b>$e</b>]</font> "; } else { echo "<a href=\"?sida=$i\">$e</a> "; }
}
if ($sida <= $sidantal - 1){
$sida2 = $sida+1;
echo ' | <a href="?sida='.$sida2.'"><b>»</b></a>';
}
//############ Sidnavigering slut ##################
}?>
```

```php
<?$sida = $_GET["sida"]; 
if (!isset($sida)) { $sida = 1; }

$antal_inlagg = mysql_num_rows(mysql_query("Select forumID From mete_forum"));

$sidantal = ceil($antal_inlagg/$antal);
$start = ($sida*$antal)-$antal;

$sql = mysql_query("SELECT datum,inlagg,namn,email FROM mete_forum Order By forumID desc LIMIT $start, $antal, $sida" $conn);

if ($antal_inlagg > $antal) {
$pages = '<br><select class=arkiv name=links onChange="self.location.href=this.options[this.selectedIndex].value;">' . "\n";
while ($cur_page++ < $sidantal) {
$start_records = ($cur_page*$antal)-($antal-1);
$end_records = $start_records+($antal-1);
if ($cur_page== $sida ) { $selected_page = ' selected'; } else { $selected_page = ''; }
$pages .= '<option value="forum_sok.php?sida=' . $cur_page . '"' . $selected_page . '>Inlägg ' . $start_records . '-' . $end_records . '</option>' . "\n";
}
$pages .= '</select>' . "\n";
}
echo $pages;?>
```

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

## #6 — berget74, 2005-06-22T10:34Z

Ingen som kan hjälpa mig?

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

## #7 — aasah, 2005-06-22T13:02Z

Re: Paging

Jag är rädd att jag läste slarvigt igår... trodde du ville ha ett pagingskript. :r 

> **berget74 skrev:**
>
> Skulle behöva hjälp med hur man fixar så att det går att spärra antalet sidor som visas på forumet. Idag läggs till det till en ny sida efter hand som inläggen uppkommer på formumet men skulle alltså vilja låsa det. Någon som kan hjälpa mig? Tacksam för alla hjälp!...

Jag är rädd att jag inte riktigt fattar vad du menar? :q Låsa hur? När ska det läggas till och inte? Vad är "gränsen" för vad som ska visas?  :q

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

## #8 — berget74, 2005-06-22T13:09Z

Det ska alltså gå att ställa antalet sidor bakåt i tiden. 

Exempel:

\< 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 \>

Och alltså inte som nu läggas till per automatik vilken får till följd att sidan flippar ut.

Mvh,
Mattias

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

## #9 — aasah, 2005-06-22T13:31Z

Du menar att du vill alltid visa tex de 5 sista sidorna? Så om det finns 7 sidor så ska man kunna välja på 3 4 5 6 7? Har jag fattat rätt?

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

## #10 — berget74, 2005-06-22T13:37Z

Nope, senaste sidan är alltid "1". Klickar man på "1" så visas alltså de 50 senaste inläggen. Vill alltså att den ska sluta skriva ut sidnummer efter ett förbestämt antal, exempelvis 10 sidor. Tips på hur man fixar det?

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

## #11 — aasah, 2005-06-22T13:48Z

Men det borde väl vara enkelt, eller var tänker jag fel?

```php
$visaMax = 10;
$sidantal = min($visaMax, ceil($antal_inlagg/$antal));
```

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

## #12 — berget74, 2005-06-22T14:15Z

Får det inte att funka tyvärr. 

Får fel på följande rad:

```php
                        $sql = mysql_query("SELECT datum,inlagg,namn,email FROM mete_forum Order By forumID desc LIMIT $start, $antal, $sida, $visaMax" $conn);
```

```php
<?$sida = $_GET["sida"];            
                        if (!isset($sida)) { $sida = 1; }

                        $antal_inlagg = mysql_num_rows(mysql_query("Select forumID From mete_forum"));
  
						$sidantal = min($visaMax, ceil($antal_inlagg/$antal));
                        $start = ($sida*$antal)-$antal;

                        $sql = mysql_query("SELECT datum,inlagg,namn,email FROM mete_forum Order By forumID desc LIMIT $start, $antal, $sida, $visaMax" $conn);

                        if ($antal_inlagg > $antal) {
		          $pages = '<br><select class=arkiv name=links onChange="self.location.href=this.options[this.selectedIndex].value;">' . "\n";
		          while ($cur_page++ < $sidantal) {
			    $start_records = ($cur_page*$antal)-($antal-1);
			    $end_records = $start_records+($antal-1);
			    if ($cur_page== $sida ) { $selected_page = ' selected'; } else { $selected_page = ''; }
			    $pages .= '<option value="forum_sok.php?sida=' . $cur_page . '"' . $selected_page . '>Inlägg ' . $start_records . '-' . $end_records . '</option>' . "\n";
		          }
		          $pages .= '</select>' . "\n";
                        }
                        echo $pages;?>
```

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

## #13 — aasah, 2005-06-22T14:30Z

Du missförstod.
$visaMax ska inte in i SQL-satsen. Utan se till att den variabel som innehåller maxvärdet av vad du ska hämta får minvaärdet av allt och $visaMax.

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

## #14 — berget74, 2005-06-22T14:34Z

Har testat båda delarna, tror jag. Är inte detta som du menar?

```php
                        <?$sida = $_GET["sida"];            
                        if (!isset($sida)) { $sida = 1; }

                        $antal_inlagg = mysql_num_rows(mysql_query("Select forumID From mete_forum"));
  
						$visaMax = 10;
						$sidantal = min($visaMax, ceil($antal_inlagg/$antal));
                        $start = ($sida*$antal)-$antal;

                        $sql = mysql_query("SELECT datum,inlagg,namn,email FROM mete_forum Order By forumID desc LIMIT $start, $antal, $sida" $conn);

                        if ($antal_inlagg > $antal) {
		          $pages = '<br><select class=arkiv name=links onChange="self.location.href=this.options[this.selectedIndex].value;">' . "\n";
		          while ($cur_page++ < $sidantal) {
			    $start_records = ($cur_page*$antal)-($antal-1);
			    $end_records = $start_records+($antal-1);
			    if ($cur_page== $sida ) { $selected_page = ' selected'; } else { $selected_page = ''; }
			    $pages .= '<option value="forum_sok.php?sida=' . $cur_page . '"' . $selected_page . '>Inlägg ' . $start_records . '-' . $end_records . '</option>' . "\n";
		          }
		          $pages .= '</select>' . "\n";
                        }
                        echo $pages;?>
```

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

## #15 — fiddler, 2005-06-22T14:54Z

Saknas det inte ett kommatecken före $conn i din mysql_query?

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

## #16 — aasah, 2005-06-22T15:05Z

fiddler har rätt. Det borde vara:
$sql = mysql_query("SELECT .... LIMIT $start, $antal, $sida"**,** $conn);

Kan LIMIT verkligen ta tre argument? Vad innebär dessa tre?

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

## #17 — berget74, 2005-06-22T15:15Z

Tack, nu funkar det men tyvärr så får jag nu ett fel på andra raden på:

```php
                <?}else{
                  while($RS = mysql_fetch_assoc($sql)) {?>
```

Får även ett "s" längst upp i vänstra hörnet, fattar inte varför, något som vet?

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

## #18 — aasah, 2005-06-23T07:20Z

s:et måste betyda att du någonstans skriver ut ett 's'. Antingen har du ett s utanför PHP-koden, eller så skriver du ut någon variabel som innehåller 's'.

Nu ser man ju inte hela koden, så du kanske har ett skumt variabelnamn, men tja... Det är INTE SQL-frågan du skickar till mysql_fetch-funktionerna utan resultathandtaget. Alltså:

```php
$sql = "SELECT * FROM Tabell"; //tex
$res = mysql_query($sql);
while ($row = mysql_fetch_assoc($res)) {
```

Om det inte var detta som var felet, posta felmeddelandet!

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

---

Tråden på webben: https://www.webforum.nu/amne/php/130059-paging
