---
title: "Sidnavigering"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/75868-sidnavigering"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Asa"
published: "2003-05-04T20:05:53.000Z"
updated: "2003-05-12T13:26:38.000Z"
replies: 8
views: 518
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/asp/75868-sidnavigering"
---

# Sidnavigering

## #1 — Asa, 2003-05-04T20:05Z

Hmm, lyckades visst posta i fel foeum :/ Ajdå!

Jag har en kod för sidnavigering som funkar så att det står så här:

10 Bakåt \| Bakåt \| 1 2 3 4 5 6 7 8 9 10 \| Nästa \| Nästa 10

Men jag vill kunna bestämma hur som helst om det ska vara 10 sidor som ska synas mellan eller ex 4 eller kanske 13. Hoppas nån förstår hur jag menar. Här kommer koden iallafall!

```
PERSIDAN = 10
Sidan = Request.QueryString("sida")
If Sidan = "" then 
   sida = 1 
Else 
   sida = Sidan 
End If 

...LITE MER KOD FÖR SIDNAVIGERING HÄR M.M...

If Sidor > 1 Then
If Len(sida) = 1 then
  Dec = 0
ElseIf Len(sida) = 2 then
  If Right(sida,1) = 0 then
    Dec = (Left(sida,1) * PERSIDA)-PERSIDA
  Else
    Dec = (Left(sida,1) * PERSIDA)
  End If
ElseIf len(sida) = 3 then
  If Len(PERSIDA) = 1 Then
  Else
    Dec = (Left(sida,2) * PERSIDA)
  End If
End If
i = 0

      If (Int(sida)) > Int(PERSIDA) Then
          Response.write "<a href=gb.asp?id=" & GbId & "&sida="& (Int(Dec)) & "><b>" & PERSIDA & " Bakåt</b></a> | "
      End If
      If (Int(sida)) > 1 Then
          Response.write "<a href=gb.asp?id=" & GbId & "&sida="& (Int(sida)-1) & "><b>Bakåt</b></a> | "
      End If
      
      For i = (int(Dec)+1) to Sidor
        If Int(i) < Int(Dec + (PERSIDA+1)) then
          If (Int(i)) = (Int(sida)) then 
            Response.write "<b>"& i &"</b> " 
          Else 
            Response.write "<a href=gb.asp?id=" & GbId & "&sida="& i &">"& i &"</a>&nbsp;" 
          End If
        End If
      Next 

      If (Int(sida)) <> (Int(Sidor)) Then
         Response.write " | <a href=gb.asp?id=" & GbId & "&sida="& (Int(sida)+1) & "><b>Framåt</b></a>"
      End If
      If (Dec+PERSIDA) < (Int(Sidor)) Then
         Response.write " | <a href=gb.asp?id=" & GbId & "&sida="& (Int(Dec + (PERSIDA+1))) & "><b>Framåt " & PERSIDA & "</b></a>"
      End If
End If
```

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

## #2 — Jojoxx, 2003-05-04T20:08Z

Flyttas till ASP, VBScript.

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

## #3 — m_soderlund, 2003-05-05T00:22Z

Du får ju klämma in någon eller några If-satser mellan första pagingsidan och sista pagingsidan. Och sen verkar dina If-satser lite dumma, ex denna:

```
If Len(PERSIDA) = 1 Then
Else
Dec = (Left(sida,2) * PERSIDA)
End If
```

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

## #4 — Asa, 2003-05-09T23:19Z

Jag ha rinte byggt detta men om man sätter 10 som PERSIDA så funkar denna kod men jag vill kunna välja vilken siffra som helst. Går det med en smidig kod?

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

## #5 — solbulle, 2003-05-10T10:16Z

Vad händer om du sätter en annan siffra?

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

## #6 — PatrikB, 2003-05-12T12:43Z

Verkar som du inte har fått svar ännu.

Kom på denna kod efter att vi snackat på MSN:

```
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<p>
<%
'## -- hur många sidor som finns i recordsetet --
intTotalPages = 25

'## -- vilkensida som ska visas i recordsetet --
intPage = Request.QueryString("page")
	If Len("" & intPage) = 0 OR Not IsNumeric(intPage) Then intPage = 1

'## -- hur många sidnummer som ska visas per gång --	
intSweep = 6

intSweepFactor = (intPage / intSweep)

'## -- vilken sida som ska börja av antal sidnummer som ska visas (intSweep) --
If intPage MOD intSweep <> 0 Then
	intSweepStart = (CLng((intPage / intSweep) + 0.5) * intSweep) - intSweep + 1
Else
	intSweepStart = ((intPage / intSweep) * intSweep) - intSweep + 1
End If

intSweepEnd = (intSweepStart + intSweep) - 1
%>
</p>
<p>
<%
If intSweepStart > intSweep Then
%>
<a href="paging_paging.asp?page=<% =intPage - intSweep%>"><% =intSweep%> Bak&aring;t</a> 
<%
Else
%>
<% =intSweep%> Bak&aring;t 
<%
End If '## -- intSweepStart > intSweep --

If intPage > 1 Then
%>
| <a href="paging_paging.asp?page=<% =intPage - 1%>">Bak&aring;t</a> | 
<%
Else
%>
Bak&aring;t |
<%
End If '## -- intPage > 1 --

'## -- loopa igenom alla sidnummrena i "sweepet" --
For N = intSweepStart TO intSweepEnd
	If N = Clng(intPage) OR N >= intTotalPages Then
		Response.Write "<b>" & N & "</b> "
	Else
%>
<a href="paging_paging.asp?page=<% =N%>"><% =N%></a> 
<%
	End If
Next
%>
| 
<%
If CLng(intPage) < CLng(intTotalPages) Then
%>
<a href="paging_paging.asp?page=<% =intPage + 1%>">Fram&aring;t</a> 
<%
Else
%>
Fram&aring;t 
<%
End If '## -- intPage < intTotalPages --
%>
| 
<%
If (intPage + intSweep) < intTotalPages Then
%>
<a href="paging_paging.asp?page=<% =intPage + intSweep%>">Fram&aring;t <% =intSweep%></a> 
<%
Else
%>
Fram&aring;t <% =intSweep%>
<%
End If '## -- (intPage + intSweep) < intTotalPages --
%>
</p>
</body>
</html>
```

Bara att labba tills du känner dig "hemma" i koden och du förstår koden. Sedan, då är det bara att implementera det i dina sidor.
Ingen snygg kod, behöver fräschas upp en liten aning :e

Om det är något som är oklart, bara att fråga

cya,
PatrikB

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

## #7 — Jesper T, 2003-05-12T13:07Z

Värdet i "intTotalPages" kan du ju om du vill skicka i en Q.S. så att användaren själv hur många träffar per sida som skall visas.
(Men det kanske var så du tänkte..?)

```
<select name="intTotalPages">
<option>5
<option>10
<option>15
</select>

<%intTotalPages=cInt(ReQuest.form("intTotalPages"))%>
```

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

## #8 — PatrikB, 2003-05-12T13:23Z

\[r\]
har inte med hur många poster per sida som ska visas. Själva pagingen finns redan färdig
\[/r\]

intTotalPages beräknas utifrån hur många poster som kommer från recordsetet. (rst.PageCount)

Det är en liten "spin-off" på vanlig paging, dvs man vill inte visa ut alla "100" sidnummer utan n antal (intSweep) per gång

cya,
PatrikB

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

## #9 — PatrikB, 2003-05-12T13:26Z

kika in detta:

10 Bakåt \| Bakåt \| 1 2 3 4 5 6 7 8 9 10 \| Nästa \| Nästa 10

nästa 10:
10 Bakåt \| Bakåt \| 11 12 13 14 15 16 17 18 19 20 \| Nästa \| Nästa 10

istället för att få
10 Bakåt \| Bakåt \| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20  \| Nästa \| Nästa 10

cya,
PatrikB

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/75868-sidnavigering
