Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer
Artiklar > ASP

GetRows Paging (1, 2, 3)

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.

Definera värden

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.

Hämta posterna från databasen

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 = Nothing

Loopa ut alla poster

Sen ä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  

Vad hände nu?

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.

Och nu till pagingen

Koden nedan loopar ut alla sidnummer och gör de till klickbara länkar så vi kan navigera oss genom sidorna:

Kod:
If isArray(arrMembers) Then

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&"&amp;p="&i+1&""">"&i+1&"</a>, ")
            End If
       Next
    
    End If
End If

Slutord

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)

Kommentarer

jesper sa den 19 augusti 2007 kl 12:11:
Kanon bra artikel :)
Pettersoft sa den 17 januari 2008 kl 10:08:
Jätte bra artikel Shadi.
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy