webForumDet fria alternativet

Nästa/Föregående post.

ASP

4 svar · 363 visningar · startad av UrMe

Medlem sedan apr. 2001762 inlägg
Frågan#1

Jag håller på att försöka få till Nästa/föregående länkar.. men får "Felaktigt matrisindex: '-1'" etc.

Använder ASP och Access som databas.

Jag tyckte min lösning var strålande ända tills jag får felmeddelande lite då och då, det fungerar till hälften typ :)

If Request.Querystring("id") = "" Then
	set curSQL = minCon.execute("SELECT TOP 1 * FROM tabell WHERE inlagg = 'gast' ORDER BY datum DESC, idnr DESC")
	set nextSQL = minCon.execute("SELECT TOP 1 * FROM tabell WHERE inlagg = 'gast' AND idnr <> "&curSQL("idnr")&" ORDER BY datum DESC, idnr DESC")
	nextlinkid = nextSQL("idnr")
Else
	idnu = Request.Querystring("id")
	set allSQL = minCon.execute("SELECT * FROM tabell WHERE inlagg = 'gast' ORDER BY datum DESC, idnr DESC")
	i = 0
	Do until allSQL.EOF
		Redim Preserve inlaggid(i)
		inlaggid(i) = allSQL("idnr")
		i = i + 1
	allSQL.MoveNext
	Loop
	allSQL.close

	set curSQL = minCon.execute("SELECT * FROM tabell WHERE inlagg = 'gast' AND idnr = "&idnu&"")
	For j = 0 to ubound(inlaggid)
		If inlaggid(j) = curSQL("idnr") Then
			nextlinkid = inlaggid(j+1)
			prevlinkid = inlaggid(j-1)
		End If
	Next
End If

Sedan skriver jag ut next och prev länkarna:

<%
If prevlinkid <> "" Then
	Response.Write "<a href=""index.asp?id="&prevlinkid&""">&laquo; Föregående</a>"
End If

If nextlinkid <> "" Then
Response.Write "<a href=""index.asp?id="&nextlinkid&""">Nästa &raquo;</a>"
End If
%>

Felmeddelandet jag får är på Rad 26 vilket är:
Felaktigt matrisindex: '-1'

nextlinkid = inlaggid(j+1)

EDIT: Kom jag på att jag får ju det för att det arrayen blir typ tom då ju.. hmm kanske kan fylla sista och första med NULL bara?

Medlem sedan apr. 2001762 inlägg
#2

Japp det fungerade perfekt om jag la in ett "" värde i början och slutet av arrayen.

Om någon har en bättre lösning på denna typ av prev/next länkar så tar jag gärna emot den :)

Medlem sedan maj 2001431 inlägg
#3

En helt annan sak:

	Do until allSQL.EOF
		Redim Preserve inlaggid(i)
		inlaggid(i) = allSQL("idnr")
		i = i + 1
	allSQL.MoveNext
	Loop

Aj! det där tror jag kan göra ont på server ;)

Medlem sedan apr. 2001762 inlägg
#4

Aj det lät int ebra :) hur ska man skriva om den då?

Medlem sedan maj 2001431 inlägg
#5

Du kan använda GetRows och få allt till en Array direkt. Sedan har du UBound för att kolla hur många element du har.

398 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
131 ms — deklarationer (db)
126 ms — hämta statistik (db)
137 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)