webForumDet fria alternativet

pagingbugg i samband med bildvisning

ASP

3 svar · 181 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Frågan#1

Tjenixen!
Har ett ommodifierat paging-script gjort av PatrikB men får en liten bugg som jag inte hittar lösningen på, så hjälp!

Sidan listar tumnagelbilder där besökaren kan välja hur många rader samt kolumner som ska visas per sida.

I databasen har jag 5 st poster.
På sidan väljer jag sedan att visa bilderna i två kolumner i en rad.
Det ska alltså bli samanlagt 3 sidor, 2+2+1
Dock får jag bara två sidor, får ingen länk till den sista, varför?

'nästa sida -------------------------------------------------------------------
Sub NextPage(Byval Linkname, ByVal HowManyPages, ByVal WichPage, Byval Querystrings)
	Dim Pagename
	Pagename = Request.ServerVariables("Script_name")
	If CInt(WichPage) < CInt(HowManyPages) Then
		Response.Write "<A href=""" & Pagename & "?" & _
		"Page=" & WichPage + 1 & "&" & Querystrings & """ class=""paginglink"">" & Linkname & " </A>"
	Else
		Response.Write "<span class=""paging"">" & Linkname & "</span>"
	End If
End Sub

'vilken post ska pagingen börja på ===========================================
Function getStartID(ByVal PageSize, ByVal ViewPage)
	Dim m_intStart
	m_intStart = ((PageSize * ViewPage) - PageSize)
	getStartID = m_intStart
End Function

Function countPages(ByVal HowManyRecords, ByVal PageSize)
	Dim m_intTotalPages
	Dim m_intRest

	m_intTotalPages = HowManyRecords / PageSize
	If m_intTotalPages < 1 Then
		m_intTotalPages = 1
	Else
		m_intRest = m_intTotalPages - CLng(m_intTotalPages)
		
		If m_intRest > 0 AND m_intRest < 0.5 Then
			m_intTotalPages = CLng(m_intTotalPages) + 1
		Else
			m_intTotalPages = CLng(m_intTotalPages)
		End If
	End If
	countPages = m_intTotalPages
End Function

'Antal poster per sida samt arraynamnet =====================================
Public Sub Write_Loopstart(Byval numPages, Byval arrName)
'vilken sida ska visas
intPage = Request.QueryString("Page")
If intPage = "" Then intPage = 1

'numPages hämtas från call Write_Loopstart, antalet poster
intPageSize = numPages
'arrName hämtas från call Write_Loopstart, arraynamnet
arrRecords = arrName

'tar fram första posten
intStartID = getStartID(intPageSize, intPage)
If IsArray(arrRecords) Then
	'hur många poster finns det totalt
	intTotalRecords = UBound(arrRecords,2) + 1
	
	'hur många sidor finns det i recordsetet
	intTotalPages = countPages(intTotalRecords, intPageSize)
	'skriver ut sidantal
End If
End Sub

'------------------------------------------------------------------------------

intRows = 1
intCols = 2

Call Write_Loopstart(intRows*intCols, arrImages) 'bestämmer antal poster per sida

Call NextPage("Nästa", intTotalPages, intPage, "") 'skriver ut länken nästa

Hoppas det inte ser för rörigt ut!
Det kan också nämnas att väljer jag nått annat än en rad och två kolumner så funkar koden. :)

Medlem sedan dec. 200012 464 inlägg
#2
m_intTotalPages = (HowManyRecords -1)/ PageSize + 1
Medlem sedan juni 20003 076 inlägg
#3

Tack LarsG för du orkar kika igenom koden! :bire

Dock vände problemet, nu funkar det att välja 1 rad och 2 kolumner, men inget annat!
Det blir då en extra "nästa länk" och man får: Subscript out of range om man klickar på länken.

Medlem sedan juni 20003 076 inlägg
#4

Jag hajjar inte riktigt detta fenomen, med hjälp av denna if-tagg så löses problemet men det känns inte rätt!

	If HowManyRecords = 5 And PageSize = 2 Then
	m_intTotalPages = (HowManyRecords -1)/ PageSize + 1
	Else
	m_intTotalPages = HowManyRecords / PageSize
	End If

Undrar vad som händer om man har jättemånga bilder, finns ju risk att det kraschar då också och inte bara när man väljer 1+2.

Nån som ser nått annat fel?

258 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
116 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)