Jag skulle vilja ha två pilar åt vardera hållen som tar en till föregående eller nästa sida när jag "pagar" ut ett recordset, men det står still i huvudet och jag tänkte att det kanske redan finns färdig kod för detta som jag kan kolla på.
Jag försökte med "rsExempel.AbsolutePage - 1" o.s.v. men det fungerade inte speciellt bra, och jag vill inte ha någon länk till sidan 1 när jag befinner mig på sida 1 etc.
Ta gärna en titt på den här pagingen med getrows. Har fått hjälp av PatrikB sedan har jag även laggt till lite andra funktioner för säkrare körning av scriptet! Det här scriptet fungerar perfekt för mig i allla fall!
<%
Dim intPage, intPageSize, N, varArray, intTotalPages
intPage = Request.QueryString("page")
'Här har jag även lagt till så att endast numeriska värden tillåts i querystringen page
If NOT IsNumeric(intPage) OR Len(intPage) = 0 Then intPage = 1
'välj hur många poster per sida som ska visas!
intPageSize = 5
'Välj vad du vill hämta med SQL
strSQL = "SELECT Datum, Namn, Email, OrtStad, Kommentar, IPnummer FROM Gastbok " &_
" ORDER BY ID DESC"
'Skapa DB-koppling, jag gör det via en funktion, går på annat vis oxå
dbConnect dbUrl, Connection
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.PageSize = intPageSize
objRS.Open strSQL, Connection, 1, 3
intTotalPages = objRS.PageCount
'Om sidvärdet i QueryStringen är större än det total värdet av sidor
'som finns gör då om värdet till ett för att slippa felmeddelanden
If intPage - 1 >= intTotalPages Then
intPage = 1
End If
If Not objRS.EOF Then
objRS.AbsolutePage = intPage
varArray = objRS.GetRows(intPageSize)
End If
objRS.Close
Set objRS = Nothing
Connection.Close
Set Connection = Nothing
If intTotalPages = 0 Then
Response.Write "Visar sida " & intPage & "/1 i gästboken.<BR><BR>" & vbCRLF
Else
Response.Write "Visar sida " & intPage & "/" & intTotalPages & " i gästboken.<BR><BR>" & vbCRLF
End If
Response.Write "<img src=gif/linje_red.gif height=3 width=400><BR><BR>" & vbCRLF
If IsArray(varArray) Then
Dim strNamn, strEmail, strOrtStad, strKommentar, strDatum, strIPnummer
For N = 0 TO UBound(varArray,2)
strDatum = varArray(0,N)
strNamn = varArray(1,N)
strEmail = varArray(2,N)
strOrtStad = varArray(3,N)
strKommentar = varArray(4,N)
strKommentar = Replace(strKommentar, vbCRLF, "<BR>")
strIPnummer = varArray(5,N)
Response.Write _
"<table width=""400"" border=""0"" cellspacing=""0"" cellpadding=""0"">" & vbCRLF &_
"<tr>" & vbCRLF &_
"<td align=""left"" valign=""top"" width=""60%"">" & vbCRLF &_
"<B><A href=""mailto:" & strEmail & """ class=""blacklink"">" & strNamn & "</A></B><BR>" & vbCRLF &_
"Ort/Stad: " & strOrtStad & vbCRLF &_
"</td>" & vbCRLF &_
"<td align=""right"" valign=""top"" width=""40%"">" & vbCRLF &_
strDatum & "<BR>" & vbCRLF &_
"<FONT COLOR=""#333333"">IP: " & strIPnummer & "</FONT>" & vbCRLF &_
"</td>" & vbCRLF &_
"</tr>" & vbCRLF &_
"</table><BR>" & vbCRLF &_
strKommentar & vbCRLF &_
"<BR><BR><img src=""gif/linje_red.gif"" height=""3"" width=""400""><BR><BR>" & vbCRLF & vbCRLF
Next
End If
Response.Write _
"<table width=""400"" border=""0"" cellspacing=""0"" cellpadding=""0"">" & vbCRLF &_
"<tr>" & vbCRLF &_
"<td align=""left"" valign=""top"" width=""60%"">" & vbCRLF
If CLng(intPage) > 1 Then
Response.Write _
"<img src=""gif/pil_red2.gif""> " & vbCRLF &_
"<a class=""darkredlink"" href=""" & Request.ServerVariables("SCRIPT_NAME") &_
"?page=" & intPage - 1 & """>Föregående</A> " & vbCRLF
Else
Response.Write " "
End If
Response.Write _
"</td>" & vbCRLF &_
"<td align=""right"" valign=""top"" width=""40%"">" & vbCRLF
If CLng(intPage) < CLng(intTotalPages) Then
Response.Write _
"<a class=""darkredlink"" href=""" & Request.ServerVariables("SCRIPT_NAME") &_
"?page=" & intPage + 1 & """>Nästa</A> " & vbCRLF &_
" <img src=""gif/pil_red.gif"">" & vbCRLF
Else
Response.Write " "
End if
Response.Write _
"</td>" & vbCRLF &_
"</tr>" & vbCRLF &_
"</table>" & vbCRLF
%>
Jag skulle även uppskatta om någon här kunde hjälpa mig med att visa hur jag ska räkna totalt antal poster i Databasen på smidigaste sätt!
iceM2:
ta bort alla vbcrlf som du skriver ut. finns ingen anledning mer än att koden ser fin och strukturerad ut när någon väljer att visa källa. Browsern laddar sidan bra mycket fortare utan alla dessa vbcrlf, tabbar m.m. Det är till och med så att man kan minska storleken på sidan (html'en som skickas) med upp till 50%. Att all HTML kommer på en och samma rad spelar ingen som helst roll för browsern
okej Patrik jag följer ditt råd! Var precis den anledningen till att jag använde vbCRLF ska ta bort detta... Trodde inte det skulle vara så märkbart för prestandan... Sedan är det ju att ha onödigt strukturerad källkod...(alltså om man som Patrik säger tar visa källa i browsern)
Men att använda Response.Write _ (fortsättningstecken) måste väl vara bra prestandamässigt?
277 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a