En bra funktion i MySql är funktionen "LIMIT".
Här är ett bra exempel på hur det kan utnyttjas och på köpet får man också en rejäl prestanda vinst iom att man slipper hämta alla posterna från tabellen på varje sida.. = mindre belastning på databasen.
Detta script innehåller en del luckor, tex så kan någon ange ett felaktigt sidnummer i url:n vilket resulterar i ett sql-fel men detta löser ni säkert själva.
Kom gärna med förslag på förbättringar.
<%
'Variabler
Dim objCon, sSql, Rs, iRecords, iPageSize, iPages, iPage, iStart, myArray, i
'Öppna databasen
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.Open "DRIVER=MySQL;server=localhost;uid=;pwd=;database="
'Räkna antalet poster
sSql = "SELECT COUNT(*) AS recordCount "
sSql = sSql & "FROM tabell "
Set Rs = objCon.Execute(sSql)
iRecords = Rs("recordCount")
Rs.Close
Set Rs = Nothing
'Antal poster/sida
iPageSize = 20
'Hur många sidor totalt
iPages = int(iRecords / iPageSize) +1
'Kontrollera vilken sida vi är på
iPage = Request.QueryString("pg")
If iPage = "" Or Not isNumeric(iPage) Then
iPage = 1
Else
iPage = int(iPage)
End If
'Offset, ex: iStart = 20 = hämta data från
'tabellrad 20 och 20* rader neråt (*iPageSize)
iStart = iPage * iPageSize
iStart = iStart - iPageSize
'SQL-frågan
'OBS! Om du vill använda tex en "WHERE"-sats, så
'glöm inte att lägga till "WHERE"-satsen i den övre frågan!
sSql = "SELECT fält1, fält2, fält3 "
sSql = sSql & "FROM tabell "
sSql = sSql & "LIMIT " & iStart & " ," & iPageSize & " "
Set Rs = objCon.Execute(sSql)
'Överför resultatet till en array
myArray = Rs.GetRows()
Rs.Close
Set Rs = Nothing
'Stäng databasen
objCon.Close
Set Objcon = Nothing
'Skriv ut data't
For i = 0 To UBound(myArray,2)
Response.Write(0,i & "<BR>")
Response.Write(1,i & "<BR>")
Response.Write(2,i & "<BR>")
Next
'Skriv ut sid-länkar
If iPages > 1 Then
Response.Write("<HR>")
Response.Write("<B>Sidor: </B>")
If iPage > 1 Then Response.Write("<A href=""?pg=" & iPage - 1 & """>Föregående</A> ")
For i = 1 To iPages
If i = iPage Then
Response.Write("<B>" & i & "</B> ")
Else
Response.Write("<A href=""?pg=" & i & """>")
Response.Write(i)
Response.Write("</A> ")
End If
next
If iPage < iPages Then Response.Write("<A href=""?pg=" & iPage + 1 & """>Nästa</A>")
End If
%>