I den här artikeln kommer jag att gå igenom hur man bygger ett paging system med hjälp av get GetRows. Skillnaden mellan den här artikeln och den jag skrev innan: GetRows Paging (nästa / föregående) är att i denna ser pagingen helt annorlunda ut. Vi kommer se till att det står 1, 2, 3 osv som länkar så man kan klicka på dem.
Vi kommer att börja med att bestämma hur många poster per sida vi ska visa och sen ska vi lägga till några andra variabler som vi kommer ha behov av.
intTPS = 15
intStart = 0
intS = Request.QueryString("s")
intStop = intStart + intTPS
If Request.QueryString("s") <> "" Then
If isNumeric(intS) Then
intStart = CLng(intS)
Else
intStart = 0
End If
End If
Siffran 15 är antalet poster per sida som ska visas. Ändra den till valfritt positivt (> 0) tal.
Nu ska vi hämta posterna från databasen. Vi ska använda oss av attributet LIMIT som används när man använder en MySQL databas, för Access får man använda sig av TOP istället.
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=" &dbServer& "; DATABASE=" &dbDatabase& "; USER=" &dbUser& "; PASSWORD=" &dbPass& ";"
Set RecSet = Connect.Execute("SELECT memUsername FROM tblMembers WHERE memOnline = 1 LIMIT "& intStart &"," & intStop)
If RecSet.EOF Then
arrMembers = ""
Else
arrMembers = RecSet.GetRows()
End If
RecSet.Close : Set RecSet = Nothing
Connect.Close : Set Connect = NothingSen är det bara att göra en kontroll. Kolla ifall det finns några poster eller inte:
If isArray(arrMembers) Then
...HÄR KOMMER VÅR KOD (SE NEDAN)...
Else
Response.Write("Inga medlemmar hittade :(")
End If
Och nu ska vi ta reda på antalet rader som hittades i databasen:
intRows = Ubound(arrMembers,2)
Och nu loopar vi ut allt:
For i = 0 To intRows Step 1
Response.Write(arrMembers(0,i) & "<br />")
Next
Det jag gjorde nu är att jag loopade ut alla poster som hittades i databasen (de 15 första). Varför skrev jag då arrMembers(0,i)?
Jo, den första siffran/parametern i parantesen anger kolumnen som vi vill plocka ut ur raden i. Förstår du?
Om du tittar på SQL raden i mitt exempel så plockar jag ut kolumnen memUsername och den är den första kolumnen, och som vi vet så har första posten värdet 0, andra posten 1 osv.
Skulle jag ha plockat ut alla kolumner från databasen (då använder man ju *) så skulle 0 peka på första kolumnen i databasen.
Koden nedan loopar ut alla sidnummer och gör de till klickbara länkar så vi kan navigera oss genom sidorna:
intAmount = Ubound(arrMembers,2)
If Clng(intAmount) > Clng(intTPS) Then
intTemp = cInt(intAmount) / cInt(intTPS)
intCurrent = Request.QueryString("p")
If isNumeric(intCurrent,2) Then
intCurrent = cInt(intCurrent)
Else
intCurrent = 0
End If
For i = 0 To intTemp Step 1
If i+1 = intCurrent Then
Response.Write("["&i+1&"], ")
Else
Response.Write("<a href=""Sida.asp?s="&(i)*intTPS&"&p="&i+1&""">"&i+1&"</a>, ")
End If
Next
End If
End If
Nu har vi lärt oss hur man bygger ett snabbt och effektivt paging system med hjälp av GetRows. Det som är bra med GetRows är att du hämtar alla poster från databasen och sparar de i en array, det gör att du kan stänga kopplingen snabbt istället för att låta databaskopplingen stå öppen igenom hela sidan.
Redigerades av Shadi
Jag hade stavat fel på vissa ställen. Sen redigerade jag artikeln för jag såg att jag missade några punkter.
Skapades: 2007-08-19 12:01:12
Skribent: Shadi
Lästs 1185 gånger
Betyg: 0 (artikeln har endast 1 röster, det krävs minst 5 för ett betyg)