Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer
Artiklar > ASP

GetRows Paging (nästa / föregående)

I den här artikeln kommer jag att gå igenom hur man bygger ett paging system med hjälp av get GetRows.
Kom ihåg att alla SQL rader är exempel, så du får redigera dem efter eget behag.

Kontrollera sidan

Först ska vi kolla vilken sida man vill visa och se till att värdet på den är korrekt. Det gör vi med följande kod:

Dim intStart, intOffset

  intStart = Request.QueryString("s")

  intOffset = Request.QueryString("o")



  If Not IsNumeric(intStart) or Len(intStart) = 0 Then

    intStart = 0

  Else

    intStart = CInt(intStart)

  End If



  If Not IsNumeric(intOffset) or Len(intOffset) = 0 Then

    intOffset = 10

  Else

    intOffset = Cint(iOffset)

  End If

Den röda siffran är antalet poster som ska visas per sida. Det kan du ändra på till ett valfritt positivt (> 0) värde. Självklart får du ändra på variabelnamnen också, men då ska du se till att de ändras i hela skriptet.

Hämta alla poster

Sen hämtar vi alla poster från databasen. I detta exempel hämtar vi alla medlemmar i databasen som är online och sedan lägger vi in allting i en array (GetRows):

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")


If RecSet.EOF Then

    arrMembers = ""

Else

    arrMembers = RecSet.GetRows()

End If



RecSet.Close : Set RecSet = Nothing

Connect.Close : Set Connect = Nothing

Det vi gjorde är att vi kontrollerade ifall det hittades några poster i tabellen, om inte så blir arMembers till en vanlig sträng och inte array. Sedan stängde vi ned kopplingen bara.

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

Antal poster

Nu tar vi reda på antalet rader och kolumner i arrayen, detta hjälper oss sen när vi ska loopa ut alla poster. Egentligen behöver vi bara ta reda på antalet rade (intRows), men jag vill visa hur man tar reda på antalet kolumner också (intCols).

intRows = Ubound(arrMembers,2)

intCols = Ubound(arrMembers,1)

Loopa ut allt

Nu har vi bestämt hur många poster vi ska loopa ut, vi har hämtat all info från databasen och vi har tagit reda på antalet existerande poster. Det näst sista vi ska göra är att loopa ut allt, eller hur? :)

If iRows > (intOffset + intStart) Then

        intStop = intOffset + intStart - 1

    Else

        intStop = intRows

    End If



    For i = intStart to intStop

        Response.Write(arrMembers(0,i) & "<br />")

    Next 

End If

Vad hände nu?

Det jag gjorde nu är att jag loopade ut alla poster som hittades i databasen (de 10 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.

Skriv ut pagingen

Nu är det dags att skriva ut pagingen längst ned, eller hur?

If intStart > 0 then

    Response.Write("<a href=""Sida.asp?s=" & intStart-intOffset & "&o=" & intOffset & """>Föregående " & intOffset & "</a>"

End If



If intStop < intRows then

    Response.Write " <a href=""Sida.asp?s=" & intStart+intOffset & "&o=" & intOffset & """>
Nästa " & intOffset & "</a>"

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.

Skapades: 2007-08-19 11:39:28
Skribent: Shadi
Lästs 1311 gånger
Betyg: 10 (artikeln har endast 2 röster, det krävs minst 5 för ett betyg)

Kommentarer

Hultin sa den 24 oktober 2007 kl 21:18:
Väldigt bra artikel, det jag saknar är olika färger på de "variable", dvs databas kopplingar och liknande man skall ändra, inte riktigt med på noterna till 100% hela vägen. Men efter lite testande och pillade funkar det :) Men till andra som inte är riktigt så duktiga som dig på ASP.
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy