webForumDet fria alternativet

Problem med paging

8 svar · 188 visningar · startad av Method

MethodMedlem sedan apr. 2001357 inlägg
#1

Jag använder mig av Patrik B paging script, jag visra fyra poster per sida men på ett kontor där jag har fyra kontaktpersoner blir det fel den säger att det finns två sidor men klickar man på nästa så hittar den inte sidan.

Det finns bara 4 kontaktpersoner på Stockholm i databasen.

Hur kommer det sig att pagingscriptet tror att det är 2 sidor???

Ni kan kolla närmare på problemet på denna adressen :
http://www1.bengtdahlgren.se/kontakt/kontaktpers.asp?Kontor=Stockholm

tack på förhand

Jonas

------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar!
Med ett hugg faller inget träd

[Redigerat av Method den 28 jun 2001]

PatrikBMedlem sedan mars 20002 836 inlägg
#2

Hur ser din kod ut nu??

cya,
ParikB

------------------
*Det tar sig sa han som hade eld i håret*

MethodMedlem sedan apr. 2001357 inlägg
#3

så här:

	<%
									Dim kontor
									kontor = Request.Querystring("kontor")
									
						'## -- hämta alla poster --
									Function getRecords
										Dim m_objConn
										Dim m_strConnString
										Dim m_strSQL
										Dim m_objRS
										Dim m_arrRecords
										Dim MinCon
	
									m_strConnString = "provider=Microsoft.Jet.OLEDB.4.0;" & _
									"Data Source=" & Server.MapPath("../../databas/bdab1.mdb")
				
						'## -- skapa connection object och öppna upp databasen --
									Set m_objConn = Server.CreateObject("ADODB.Connection")
									m_objConn.Open m_strConnString
		
						'## -- sql-fråga för att hämta alla poster --
						'## -- denna ska du ändra så att den stämmer
						'##    med det som du vill hämta --
									m_strSQL = "select * from kontaktpersoner, kontor where kontaktpersoner.kontor = kontor.kontor AND kontaktpersoner.kontor = '" & kontor & "' Order By Namn ASC"

						'## -- recordset för att hämta alla poster --
									Set m_objRS = m_objConn.Execute(m_strSQL)
			
								If Not m_objRS.EOF Then
									m_arrRecords = m_objRS.GetRows
									getRecords = m_arrRecords
								End If
				
						'## -- clean up --
									m_objRS.Close
									Set m_objRS = Nothing
									m_objConn.Close
									Set m_objConn = Nothing

								End Function

						'## -- skriv ut sidnummer navigeringen --
								Sub PageNumbers(ByVal HowManyPages, WichPage)
								Dim strScriptName
								Dim I
	
						'## -- kolla om det finns några sidor --
								If HowManyPages = 0 Then
								Response.Write "0"
								Exit Sub
								End If

								strScriptName = Request.ServerVariables("SCRIPT_NAME")
						
								

						'## -- skriv ut länkar till sid nummer n. 
						'##    Den sida som visas ska ej vara länkad --
								For I = 1 To HowManyPages
								If CInt(I) <> CInt(WichPage) Then					
								Response.Write "<a href='" & strScriptName & "?" & "kontor=" & Server.URLEncode((kontor)) & _
								"&page=" & I & "'>" & I & "</A> "
							Else
								Response.Write "" & I & " "
							End If
						Next
				End Sub
								
						'## -- vilken post ska pagingen börja på --
								Function getStartID(ByVal PageSize, ByVal ViewPage) ' As Integer
								Dim m_intStart
								m_intStart = ((PageSize * ViewPage) - PageSize)
								getStartID = m_intStart
							End Function

								Function countPages(ByVal HowManyRecords, ByVal PageSize)
								Dim m_intTotalPages
								m_intTotalPages = CInt((HowManyRecords / PageSize) + 0.5)
								'm_intTotalPages = CInt(((HowManyRecords / PageSize) + 1) - 1)
	
								countPages = m_intTotalPages
							End Function
						'##***********************************************************************************
								Dim arrRecords
								Dim intPageSize
								Dim intPage
								Dim intStartID
								Dim I
								Dim intId
								Dim Namn
								Dim tel
								Dim intTotalPages
								Dim intTotalRecords
								Dim avd
								Dim bild
								Dim mob
								Dim email
								Dim intCounter
								Dim img
								Dim kont

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

						'## -- hur många poster ska visas per sida --
								intPageSize = 4

						'## -- hämta alla records, hämtas med metoden getrows och returneras
						'##    som en array. --
								arrRecords = getRecords

						'## -- vilken post är den första --
								intStartID = getStartID(intPageSize, intPage)

						'## -- printa ut sidan som ska visas
						'##    alla poster finns i arrayen arrRecords som
						'##    kommer från funktionen getRecords --
							If IsArray(arrRecords) Then
								'Response.Write "E ju en array<BR>"
						'## -- hur många records finns det totalt --
								intTotalRecords = UBound(arrRecords,2) + 1
	
						'## -- hur många sidor finns det i recordsetet --
								intTotalPages = countPages(intTotalRecords, intPageSize)

						'## -- startar tabellen utanför loopen --
								Response.Write "<table border=""0"" cellpadding=""0"" cellspacing=""8"" width=""680"">"

						'## -- skriv ut sidnavigerings menyn --
								Response.Write "<tr>"
								Response.Write "<td align=""left"" colspan=""2"" valign=""top""><span class=""h2"">Kontaktpersoner i  " & kontor & "</span></td>"
								Response.Write "<td align=""right"" colspan=""2"" valign=""bottom"">Sida: "
								Call PageNumbers(intTotalPages,intPage)
								Response.Write "</td>"
								Response.Write "</tr>"
								Response.Write "<tr>"
								Response.Write "<td colspan=""4""><hr size=""1"" color=""#000099""></td>"
								Response.Write "</tr>"
								Response.Write "<tr>"
								
						'## Loopen börjar
								For I = intStartID To ((intStartID + intPageSize) -1)

								intCounter = intCounter + 1 
								intId = arrRecords(0,I)
								Namn = arrRecords(1,I)
								tel = arrRecords(4,I)
								avd = arrRecords(3,I)
								bild = arrRecords(6,I)
								mob = arrRecords(5,I)
								email = arrRecords(8,I)
								kont = arrRecords(9,I)

							If Len(bild) > 0 Then 
								img ="<img src=""" & bild & """>"
							Else
								img = ""
							End If
					
								Response.Write "<td width=""120"">" & img & "<br><br></td>" & _
								"<td valign=""top""><span class=""h2""><br>" & Namn & "</span><br>" & _
								"<span class=""bold"">"& avd & "</span><br><br><br><span class=""bold"">Tel: </span>" & tel & "<br><span class=""bold"">Mob: </span>" & mob & "<br><br><br>" & _
								"<span class=""bold"">E-mail: </span><br><a href=""mailto:" & email & """>" & email & "</a>" & _
								"</td>"

							If intCounter mod 2 = 0 Then Response.Write "</tr><tr>"

							If I = UBound(arrRecords,2) Then Exit For

							Next

						'## -- stänger tabellen efter loopen --
								If intCounter mod 2 <> 0 Then
								Do Until intCounter mod 2 = 0
								Response.Write "<td> </td><td></td>"
								intCounter = intCounter + 1
								Loop
							End If
								Response.Write "</tr></table><br>"

						'## -- skriv ut sidnavigerings menyn --
								Call PrevPage(intPage)
								Response.Write" "

								Call NextPage(intTotalPages,intPage)

						'## -- skriver ut sidnavigeringen --
						'## -- skriv ut föregående sida --
								Sub PrevPage(ByVal WichPage)
								Dim strScriptName
								strScriptName = Request.ServerVariables("SCRIPT_NAME")

								Response.Write "<table border=""0"" cellpadding=""0"" cellspacing=""8"" width=""680"">"

						'## -- skriv ut en länk till föregående sida --
								If CInt(WichPage) > 1 Then
								Response.Write "<tr><td align=""left""><a href='" & strScriptName & "?" & "kontor=" & Server.URLEncode((kontor)) & "&page=" & WichPage - 1 & "'><img border=""0"" src=""../../bilder/pilar/left.gif"">&nbsp;Föregående</a></td>" 

							Else
								Response.Write "<td align=""left""></td>"
							End If
							End Sub

						'## -- skriv ut nästa sida --
								Sub NextPage(ByVal HowManyPages, ByVal WichPage)
								Dim strScriptName
								strScriptName = Request.ServerVariables("SCRIPT_NAME")
	
						'## -- skriv ut en länk till nästa sida --
								If CInt(WichPage) < CInt(HowManyPages) Then
								Response.Write "<td align=""right""><a href='" & strScriptName & "?" & "kontor=" & Server.URLEncode((kontor)) & "&page=" & WichPage + 1 & "'>Nästa&nbsp;<img border=""0"" src=""../../bilder/pilar/right.gif""></a></td></tr></table>" 
 
							Else
								Response.Write "<td align=""right""></td></tr></table>"
		
							End If
							End Sub
							
							Else
	
						'## -- inga poster fanns i db --
								intPage = 0
								intTotalRecords = 0
								intTotalPages = 0
	
						'## -- skriv ut att inga poster hittades --
								Response.Write "<P>Inget hittades i databasen.</P>"
							End If
							%>

------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar!
Med ett hugg faller inget träd

jepsOMedlem sedan mars 2001484 inlägg
#4

Jag orkar inte kontrollera hela koden, men den verkar inte gilla &page=2. Skriver du t.ex. &sida=2 är det inga problem.

Testa att byta ut &page= mot &sida= och göra en response.write på antalet poster den hittar, samt HowManyPages-variabeln.

------------------
/ jeps0

MethodMedlem sedan apr. 2001357 inlägg
#5

"Testa att byta ut &page= mot &sida= och göra en response.write på antalet poster den hittar, samt HowManyPages-variabeln."

Kan du förklara detta lite närmare.

*vet inte riktigt vad jag skall ändra i koden, vill helst slippa att schabbla till det.. :)*

------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar!
Med ett hugg faller inget träd

PatrikBMedlem sedan mars 20002 836 inlägg
#6

Du kan inte byta ut page mot sida ... eftersom det är page som styr hela klabbet.

vAd är det som står på rad 198 på urlen du postade ovan?

cya,
PatrikB

------------------
*Det tar sig sa han som hade eld i håret*

MethodMedlem sedan apr. 2001357 inlägg
#7

PatrikB, har du nåt föslag på vad det e som e fel..

Är hemskt tacksam för hjälp.

MVH

Jonas

------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar!
Med ett hugg faller inget träd

MethodMedlem sedan apr. 2001357 inlägg
#8

Det är i denna funktion det blir fel

Function countPages(ByVal HowManyRecords, ByVal PageSize)
Dim m_intTotalPages
m_intTotalPages = CInt((HowManyRecords / PageSize) + 0.5)
'm_intTotalPages = CInt(((HowManyRecords / PageSize) + 1) - 1)
countPages = m_intTotalPages
End Function

När jag använder den övre m_intTotalPages blir det en sida för mycket om antalet records som finns är lika som det antalet som skall visas.

Om jag använder den nedre m_intTotalPages blir det en sida för lite när det är fler records än det antal som skall visas på en sida (alltså fler än en sida).

Någon som kan hjälpa mig.

------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar!
Med ett hugg faller inget träd

PatrikBMedlem sedan mars 20002 836 inlägg
#9

Om du går till den urlen som du hänvisade till här ovan så får du ett fel på rad 198 .... jag skulle vilja veta vad det är som står på denna rad ... skicka gärna med hela koden och markera vilken som är rad 198.

cya,
PatrikB

------------------
*Det tar sig sa han som hade eld i håret*

144 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)