webForumDet fria alternativet

Länkning i Pagin

ASP

7 svar · 249 visningar · startad av Ivar

Medlem sedan aug. 2002218 inlägg
Frågan#1
Hm!

Ja vad skulle man göra utan Er nämligen PAGIN problem.
Den här koden funkar inte som jag vill, kan inte bläddra mellan sidorna Ex 1,2,3,4 osv.
Det är länkarna i nästa och föregående som jag inte kan fixa.
Kod:
 
 
<%
select case  request("lan")
	case "lan1"
		response.write lan1
	case "lan2"
		response.write lan2
	case "lan3"
		response.write lan3
	case "lan4"
		response.write lan4
	case "lan5"
		response.write lan5
	case "lan6"
		response.write lan6
	case "lan7"
		response.write lan7
	case "lan8"
		response.write lan8
	case "lan9"
		response.write lan9
	case "lan10"
		response.write lan10
	case "lan11"
		response.write lan11
	case "lan12"
		response.write lan12
	case "lan13"
		response.write lan13
	case "lan14"
		response.write lan14
	case "lan15"
		response.write lan15
	case "lan16"
		response.write lan16
	case "lan17"
		response.write lan17
	case "lan18"
		response.write lan18
	case "lan19"
		response.write lan19
	case "lan20"
		response.write lan20
	case "lan21"
		response.write lan21
	case "lan22"
		response.write lan22
	case "lan23"
		response.write lan23
		case "lan24"
		response.write lan24
		
end select

Function EditDatum(datum)
  Ar = Year(datum)
  Manad = Month(datum)
  Dag = Day(datum)
  EditDatum = Year(datum) & "-" & Right("0" & Month(datum), 2) & "-" & Right("0" & Day(datum), 2)

End Function

Dim connect, query, senaste, datecreated,typ, sCode, sColor,lan
sCode = "dmvlmv[bg=Khaki]sdvsd"

Dim objRegExp, m
Set objRegExp = New RegExp
objRegExp.Global = True
objRegExp.IgnoreCase = True
objRegExp.Pattern = "\[bg\=[^\]]*\]"

Set m = objRegExp.Execute(sCode)

Set objRegExp = Nothing

If m.Count Then
	sColor = Mid(m.Item(0), 5, Len(m.Item(0)) - 5)	
End If

Set m = Nothing

'## -- hur många inlägg ska visas per sida --
intPageSize = 10

'## -- vilken sida ska visas --
intPage = Request.QueryString("page")

'## -- om ingen querystring med sidvärde hittas, visa då första sidan --
If intPage = "" Then intPage = 1
Function HE(str)
	If Len(Trim(str & "")) = 0 Then Exit Function
	HE = Server.HTMLEncode(str)
End Function
query = "1"
If (Request.QueryString("lan") <> "") Then 
  query = Request.QueryString("lan")
End If

set connect = server.createobject("ADODB.connection") 
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db/annonser.mdb") & ";pwd=;" 
Set senaste = Server.CreateObject("ADODB.Recordset") 
query = "SELECT * FROM items WHERE lan LIKE '%" + Replace(query, "'", "''") + "' ORDER BY dateCreated DESC"

		'## -- hur många poster ska visas per sida --
		senaste.PageSize = intPageSize
		
		'## -- öppna och hämta alla records --
		senaste.Open query, Connect, 1, 3
		If senaste.EOF Then
			Response.Write "<br>Det finns inga inlägg.</br>"
		Else
		'## -- vilken sida i recordset uppdelningen ska visas --
		senaste.AbsolutePage = intPage
		
		'## -- hur många sidor finns i recordset uppdelningen --
		intTotalPages = senaste.PageCount
	
		
			'## -- lista alla inlägg som finns i db --
			Do Until senaste.EOF or intRecordCount >= intPageSize
			
				intRecordCount = intRecordCount + 1

Response.Write "<table width='750' bordercolor='#99FF66' align='center' cellpadding='2' cellspacing='0' > "
 
  if senaste("markerad") = "Ja" then
 Response.Write ("<td width='5%'><tr bgcolor=""" & sColor & """></td>")
else
Response.Write "<td width='5%'><tr></td>"
 end if

	if Trim(senaste("fileName")) = "" then 
	Response.Write "<td width='5%'>&nbsp;"
	
	else
	Response.Write "<td width='5%'><img src=""bilder/" & senaste("fileName") & """ height='12' width='12' ></td>"
End if
response.write "<td width='26%'><font size='1'><a href=""detail.asp?item=" & senaste("id") & """>" & senaste("item")&"</a>"
response.write "<td width='12%'><font size='1'>"
response.write eval(senaste("category"))
response.write "<td width='13%'><font size='1'>" & senaste("typ") & "&nbsp;"
response.write "<td width='18%'><font size='1'>" & EditDatum (senaste("datecreated")) & ""
response.write "<td width='16%'><font size='1'>" & senaste("stad") & "</td>"
response.write "<td width='10%'><font size='1' color=#FF0000></font>" & senaste("price") & " Kr </font></td></tr>"

senaste.MoveNext

Loop 
End If

 Response.Write "<table align='center' width='750' cellpadding='0' cellspacing='0'><tr><td bgcolor='#E6E7B6'>"
	
'## -- visa sidnavigeringen --
'## -- intPage = vilken sida som ska visas --
'## -- intTotalPages = hur många sidor som recordsetet är uppdelat i --
Call PageNavigation(intPage, intTotalPages)

'## -- skapa sid-navigering --
Sub PageNavigation(ByVal WichPage, ByVal HowManyPages)
	Dim strScriptName
	
	'## -- vilken sida ska navigeringen länka till --
	strScriptName = Request.ServerVariables("SCRIPT_NAME")
	
	'## -- visa föregående, länkat eller olänkat beroende på vilken sida som visas --
	
	If CInt(WichPage) > 1 Then
		Response.Write "<A href='" & strScriptName & "?" &_
					"page=" & WichPage - 1 & "'><< Föregående</A> "
	Else
		Response.Write "<< Föregående "
	End If
	
	'## -- lista ut alla sidnummer --
	For I = 1 To HowManyPages
		If CInt(WichPage) <> I Then
			Response.Write "<A href='" & strScriptName & "?"& _
						"page=" & I & "'>" & I & "</A> "
		Else
			Response.Write "[ <B>" & I & "</B> ]"
		End If
	Next
	
	'## -- visa Nästa, länkad eller olänkad beroende på vilken sida som visas --
	If CInt(WichPage) < CInt(HowManyPages) Then
		Response.Write "<A href='" & strScriptName & "?" &_
					"page=" & WichPage + 1 & "'>Nästa >></A>"
	Else
		Response.Write "Nästa >>"
	End If
	
End Sub
Response.Write "</td></tr></table>"
'## -- clean up --
	senaste.Close
	Set senaste= Nothing
	
	Connect.Close
	Set Connect= Nothing

%>

/ Ivar
Medlem sedan aug. 2002218 inlägg
#2
Hello!

Ändrade lite i koden men det funkar inte har Ni något förslag?
 
'## -- visa föregående, länkat eller olänkat beroende på vilken sida som visas --
	
	If CInt(WichPage) > 1 Then
		Response.Write "<A href='" & strScriptName & "?" &Request.QueryString&_
					"page=" & WichPage - 1 & "'><< Föregående</A> "
	Else
		Response.Write "<< Föregående "
	End If
	
	'## -- lista ut alla sidnummer --
	For I = 1 To HowManyPages
		If CInt(WichPage) <> I Then
			Response.Write "<A href='" & strScriptName & "?"&Request.QueryString& _
						"page=" & I & "'>" & I & "</A> "
		Else
			Response.Write "[ <B>" & I & "</B> ]"
		End If
	Next
	
	'## -- visa Nästa, länkad eller olänkad beroende på vilken sida som visas --
	If CInt(WichPage) < CInt(HowManyPages) Then
		Response.Write "<A href='" & strScriptName & "?" &Request.QueryString&_
					"page=" & WichPage + 1 & "'>Nästa >></A>"
	Else
		Response.Write "Nästa >>"
	End If

/Ivar

Request.QueryString

Medlem sedan maj 2002560 inlägg
#3

Orkade inte läsa genom din kod men den här använder och har jag själv skrivit så den vet jag fungerar:

<%
	Public Sub Navigator(TotalPosts, CurrentPage, PageSize)
		Dim Pages
		Pages = Int(TotalPosts) / Int(PageSize): If Pages / Int(Pages) > 1 Then Pages = Int(Pages) + 1
		If Pages > 0 Then
			Dim i
			With Response
				.Write "<tr><td><a href = '?page=1'><<<</a> "
				If CurrentPage > 1 Then .Write "<a href = '?page="&(CurrentPage - 1)&"'><<</a>" Else .Write "<< "
				.Write "</td><td align = 'center'>"
				For i = 1 To Pages
					If Int(CurrentPage) = i Then .Write i & " " Else .Write "<a href = '?page="&i&"'>" & i & "</a> "
				Next
				.Write "</td><td align = 'right'>"
				If Int(CurrentPage) < Pages Then .Write " <a href = '?page="&(CurrentPage + 1)&"'>>></a>" Else .Write " >>"
				.Write " <a href = '?page="&Pages&"'>>>></td></tr>"
			End With
		End If
	End Sub
%>
Medlem sedan aug. 2002218 inlägg
#4

Hej LR^evil.sid!

Tack för hjälpen men vart ska jag implementera koden på min sida?

/Ivar

Medlem sedan maj 2002560 inlägg
#5

Jag antar att du redan har liknande varialbler eftersom det rör sig om pagin

TotalPost   ' Totala antalet poster i databasen
CurrentPage ' Sidan vi vill visa
PageSize    ' Så många poster ur databasen som skall visas på varja sida

Du anropar Navigator(TotalPosts, CurrentPage, PageSize) med

Call Navigator(TotalPosts, CurrentPage, PageSize)

där du vill att navigationssystemet skall vara. Förslagsvis som sista rad i en tabell, kanske till och med som första.

Så här ser det ut

Medlem sedan aug. 2002218 inlägg
#6

Ok nu har jag gjort så här men får fel mes.

•	Feltyp:
Microsoft VBScript runtime (0x800A000B)
Division by zero
/stf/category2.asp, line 178

<%
select case  request("lan")
	case "lan1"
		response.write lan1
	case "lan2"
		response.write lan2
	case "lan3"
		response.write lan3
	case "lan4"
		response.write lan4
	case "lan5"
		response.write lan5
	case "lan6"
		response.write lan6
	case "lan7"
		response.write lan7
	case "lan8"
		response.write lan8
	case "lan9"
		response.write lan9
	case "lan10"
		response.write lan10
	case "lan11"
		response.write lan11
	case "lan12"
		response.write lan12
	case "lan13"
		response.write lan13
	case "lan14"
		response.write lan14
	case "lan15"
		response.write lan15
	case "lan16"
		response.write lan16
	case "lan17"
		response.write lan17
	case "lan18"
		response.write lan18
	case "lan19"
		response.write lan19
	case "lan20"
		response.write lan20
	case "lan21"
		response.write lan21
	case "lan22"
		response.write lan22
	case "lan23"
		response.write lan23
		case "lan24"
		response.write lan24
		
end select

Function EditDatum(datum)
  Ar = Year(datum)
  Manad = Month(datum)
  Dag = Day(datum)
  EditDatum = Year(datum) & "-" & Right("0" & Month(datum), 2) & "-" & Right("0" & Day(datum), 2)

End Function

Dim connect, query, senaste, datecreated,typ, sCode, sColor,lan
sCode = "dmvlmv[bg=Khaki]sdvsd"

Dim objRegExp, m
Set objRegExp = New RegExp
objRegExp.Global = True
objRegExp.IgnoreCase = True
objRegExp.Pattern = "\[bg\=[^\]]*\]"

Set m = objRegExp.Execute(sCode)

Set objRegExp = Nothing

If m.Count Then
	sColor = Mid(m.Item(0), 5, Len(m.Item(0)) - 5)	
End If

Set m = Nothing

'## -- hur många inlägg ska visas per sida --
PageSize = 10

'## -- vilken sida ska visas --
Page = Request.QueryString("Page")
'## -- om ingen querystring med sidvärde hittas, visa då första sidan --
If Page = "" Then Page = 1
Function HE(str)
	If Len(Trim(str & "")) = 0 Then Exit Function
	HE = Server.HTMLEncode(str)
End Function
query = "1"
If (Request.QueryString("lan") <> "") Then 
  query = Request.QueryString("lan")
End If

set connect = server.createobject("ADODB.connection") 
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db/annonser.mdb") & ";pwd=;" 
Set senaste = Server.CreateObject("ADODB.Recordset") 
query = "SELECT * FROM items WHERE lan LIKE '%" + Replace(query, "'", "''") + "' ORDER BY dateCreated DESC"

		'## -- hur många poster ska visas per sida --
		 CurrentPage= senaste.PageSize
		
		'## -- öppna och hämta alla records --
		senaste.Open query, Connect, 1, 3
		If senaste.EOF Then
			Response.Write "<br>Det finns inga inlägg.</br>"
		Else
		'## -- vilken sida i recordset uppdelningen ska visas --
		CurrentPage= senaste.AbsolutePage

		
		'## -- hur många sidor finns i recordset uppdelningen --
		TotalPosts = senaste.PageCount
	
		
			'## -- lista alla inlägg som finns i db --
			Do Until senaste.EOF or intRecordCount >= PageSize
			
				intRecordCount = intRecordCount + 1

Response.Write "<table width='750' bordercolor='#99FF66' align='center' cellpadding='2' cellspacing='0' > "
 
  if senaste("markerad") = "Ja" then
 Response.Write ("<td width='5%'><tr bgcolor=""" & sColor & """></td>")
else
Response.Write "<td width='5%'><tr></td>"
 end if

	if Trim(senaste("fileName")) = "" then 
	Response.Write "<td width='5%'> "
	
	else
	Response.Write "<td width='5%'><img src=""bilder/" & senaste("fileName") & """ height='12' width='12' ></td>"
End if
response.write "<td width='26%'><font size='1'><a href=""detail.asp?item=" & senaste("id") & """>" & senaste("item")&"</a>"
response.write "<td width='12%'><font size='1'>"
response.write eval(senaste("category"))
response.write "<td width='13%'><font size='1'>" & senaste("typ") & " "
response.write "<td width='18%'><font size='1'>" & EditDatum (senaste("datecreated")) & ""
response.write "<td width='16%'><font size='1'>" & senaste("stad") & "</td>"
response.write "<td width='10%'><font size='1' color=#FF0000></font>" & senaste("price") & " Kr </font></td></tr>"

senaste.MoveNext

Loop 
End If

 Response.Write "<table align='center' width='750' cellpadding='0' cellspacing='0'><tr><td bgcolor='#E6E7B6'>"
	
'## -- visa sidnavigeringen --
'## -- intPage = vilken sida som ska visas --
'## -- intTotalPages = hur många sidor som recordsetet är uppdelat i --

Call Navigator(TotalPosts, CurrentPage, PageSize)

'## -- skapa sid-navigering --
Public Sub Navigator(TotalPosts, CurrentPage, PageSize)
		Dim Pages
		line 178 [b]Pages = Int(TotalPosts) / Int(PageSize): If Pages / Int(Page) > 1 Then Pages = Int(Page) + 1
		If Pages > 0 Then[/b]
			Dim i
			With Response
				.Write "<tr><td><a href = '?page=1'><<<</a> "
				If CurrentPage > 1 Then .Write "<a href = '?page="&(CurrentPage - 1)&"'><<</a>" Else .Write "<< "
				.Write "</td><td align = 'center'>"
				For i = 1 To Pages
					If Int(CurrentPage) = i Then .Write i & " " Else .Write "<a href = '?page="&i&"'>" & i & "</a> "
				Next
				.Write "</td><td align = 'right'>"
				If Int(CurrentPage) < Pages Then .Write " <a href = '?page="&(CurrentPage + 1)&"'>>></a>" Else .Write " >>"
				.Write " <a href = '?page="&Pages&"'>>>></td></tr>"
			End With
		End If
	End Sub

Response.Write "</td></tr></table>"
'## -- clean up --
	senaste.Close
	Set senaste= Nothing
	
	Connect.Close
	Set Connect= Nothing

%>
Medlem sedan maj 2002560 inlägg
#7

Kolla om...

[red]Pages = Int(TotalPosts) / Int(PageSize): If Pages / Int(Page[/red][b]s[/b][red]) > 1 Then Pages = Int(Page[/red][b]s[/b][red]) + 1[/red]

... hjälper. ;)

Medlem sedan aug. 2002218 inlägg
#8

Tack LR^evil.sid fixat.
/Ivar

277 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)