webForumDet fria alternativet

Säkert en enkel sak...

ASP

2 svar · 244 visningar · startad av Brainbug

Medlem sedan sep. 200129 inlägg
Frågan#1

Hej

Jag behöver lite hjälp med en kod-snutt som inte vill fungera riktigt som jag vill. Koden är en modifiering av paging-scriptet som finns här på WF.

Sub PageNumbers2
	Dim i
	If TotalPages = 0 Then
		Response.Write("0")
		Exit Sub
	End If
	For i = 1 To TotalPages
		If CInt(i) <> CInt(ThisPage) Then
			Response.Write("<A href='" & ScriptName & "?page=" & i & "'>" & ((ThisPage + i) * PageSize) - PageSize & "-" & i * PageSize & "</A>")
		Else
			Response.Write("<B>" & LoopStart + 1 & "-" & i * PageSize & "</B>")
		End If
		Response.Write(" ")
	Next
End Sub

Tanken är att denna kod ska generera direkt-länkar till resp. sidor, så här: 1-5, 6-10, 11-15, 16-20 .....(utan komman)

Någon som har koll?

Hela koden:

Dim ScriptName
	ScriptName = Request.ServerVariables("SCRIPT_NAME")

'Skapa en förbindelse mot databasen
'----------------------------------
Set Con = Server.CreateObject("ADODB.Connection")
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("guest1.mdb") & ";"

'Hämta poster ur databasen genom att skapa ett recordset
'-------------------------------------------------------
Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open "SELECT * FROM gastbok ORDER BY datum", Con

'Om inte recordset är tomt så skapa en 2D
'array med innehållet från databasen
'----------------------------------------
If Not RS.EOF Then
	MyArray = RS.GetRows()
End If

'Stäng recordset och koppla från
'förbindelsen mot databasen
'-------------------------------
RS.Close
Set RS = Nothing
Con.Close
Set Con = Nothing

'Deklarera hur många poster som ska visas per sida
'-------------------------------------------------
Dim PageSize
	PageSize = 5

'Avgör vilken sida dokumentet befinner sig på
'--------------------------------------------
Dim ThisPage
	If Request.QueryString("page") = "" Then
		ThisPage = 1
	Else
		ThisPage = CInt(Request.QueryString("page"))
	End If

'Räkna ut det totala antalet poster som
'hämtats från databasen
'--------------------------------------
Dim TotalRecords
	TotalRecords = UBound(MyArray,2) + 1

'Avgör hur många sidor som genererats
'------------------------------------
Dim TotalPages
	sTotalPages = TotalRecords / PageSize
	If sTotalPages < 1 Then
		sTotalPages = 1
	Else
		sDecTotalPages = sTotalPages - CLng(sTotalPages)
		If sDecTotalPages > 0 And sDecTotalPages < 0.5 Then
			sTotalPages = CLng(sTotalPages) + 1
		Else
			sTotalPages = CLng(sTotalPages)
		End If
	End If
	TotalPages = sTotalPages

'Avgör vilket record som loopen ska starta på
'--------------------------------------------
Dim LoopStart
	If ThisPage = 1 Then
		LoopStart = ThisPage - 1
	Else
		LoopStart = (ThisPage * PageSize) - PageSize
	End If

'Avgör vilket record som loopen ska stanna på
'--------------------------------------------
Dim LoopEnd
	If ThisPage = TotalPages Then
		LoopEnd = TotalRecords - 1
	Else
		LoopEnd = (LoopStart + PageSize) - 1
	End If

'"Nästa-sida-länk"
'-----------------
Sub NextPage
	If CInt(ThisPage) < CInt(TotalPages) Then
		Response.Write("<A href='" & ScriptName & "?page=" & ThisPage + 1 & "'>Nästa</A>")
	Else
		Response.Write("<B style=""color: #687E91;"">Nästa</B>")
	End If
End Sub

'"Föregående-sida-länk"
'----------------------
Sub PrevPage
	If CInt(ThisPage) > 1 Then
		Response.Write("<A href='" & ScriptName & "?page=" & ThisPage - 1 & "'>Föregående</A> ")
	Else
		Response.Write("<B style=""color: #687E91;"">Föregående</B>")
	End If
End Sub

'"Direkt-länkar till resp. sidor" modell 2
'-----------------------------------------
Sub PageNumbers2
	Dim i
	If TotalPages = 0 Then
		Response.Write("0")
		Exit Sub
	End If
	For i = 1 To TotalPages
		If CInt(i) <> CInt(ThisPage) Then
			Response.Write("<A href='" & ScriptName & "?page=" & i & "'>" & ((ThisPage + i) * PageSize) - PageSize & "-" & i * PageSize & "</A>")
		Else
			Response.Write("<B>" & LoopStart + 1 & "-" & i * PageSize & "</B>")
		End If
		Response.Write(" ")
	Next
End Sub

[Redigerat av Brainbug den 14 dec 2001]

Medlem sedan dec. 200012 464 inlägg
#2
Sub PageNumbers2
Dim i
If TotalPages = 0 Then
Response.Write "0"
Exit Sub
End If
For i = 1 To TotalPages

Dim StartRow,Endrow
startRow = (i -1) * PageSize + 1
endRow = i*pagesize
if endRow > TotalRecords then endRow = TotalRecords
If CInt(i) <> CInt(ThisPage) Then
Response.Write "<A href='" & ScriptName & "?page=" & i & "'>" & startRow  & "-" & endrow & "</A>")
Else
Response.Write("<B>" & startRow  & "-" & endRow & "</B>")
End If
Response.Write " "
Next
End Sub

------------------
essentitia preter non sans multiplicandum

Medlem sedan sep. 200129 inlägg
#3

Stort tack!
Det funkade perfekt!

260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)