Jo, men du hämtar hela tabellen med getrow. Det jag menar är att en funktion ska användas för att göra SQL-satsen effektivare dvs
Select TOP " & intervall & "blabla
Tex.
intervall = 50 (som är page 1)
intervall = 50-100 (som är page 2)
intervall = 100-150 (som är page 3)
etc.
Men för att göra detta så krävs det att man kör en count på antal poster i tabellen, och det gick väl inte?
------------------
Alltid lär man sig något nytt varje dag...
PatrikBMedlem sedan mars 20002 836 inlägg Som jag sade, du kan göra det med en subquery i din sql-sats, fast mot access2k db-filen så var det ingen höjdare prestandamässigt.
På något annat sätt kan du inte veta vilket id som sida 3 börjar med om du inte "hämtar alla id'n" och sedan räknar ut vilka id'n som varje sida börjar med.
cya,
PatrikB
------------------
*Det tar sig sa han som hade eld i håret*
PatrikBMedlem sedan mars 20002 836 inlägg med denna kod kan du göra listningen:
intPage = Request.QueryString("page")
If intPage = "" Then intPage = 1
intPageSize = 20
intSelectTop = intPage x intPageSize
strSQL = "SELECT TOP " & intSelectTop & " FLD_FIELD_ID, FLD_FIELD_VALUE " & _
"FROM TBL_TABLE_NAME "
If Clng(intPage) > 1 Then
strSQL = strSQL & "WHERE NOT FLD_FEILD_ID IN (" & _
"SELECT TOP " & intSelectTop & " FLD_FIELD_ID " & _
"FROM TBL_TABLE_NAME " & _
"ORDER BY FLD_FIELD_VALUE DESC) "
End If
strSQL = strSQL & "ORDER BY FLD_FIELD_VALUE DESC"
cya,
PatrikB
------------------
*Det tar sig sa han som hade eld i håret*
RinaldoMedlem sedan mars 20014 214 inlägg hmm, fattar inte hur man ska byta stil på länkarna. Har en länkmodell som heter blacklink.
Hur lägger man in den stilen.
Detta funkar inte:
'## -- skriv ut en länk till föregående sida --
If CInt(WichPage) > 1 Then
Response.Write "<A class="blacklink" href='" & strScriptName & "?" & _
"page=" & WichPage - 1 & "'><< Föregående</A> "
Else
Response.Write "<< Föregående "
End If
------------------
Man kan ta den säkra vägen: Göra en stilren sida, snygg men lätt.
Eller så kan man ta den svåra: Mycket grafik och flashiga ting, och riskera att mislyckas.
PatrikBMedlem sedan mars 20002 836 inlägg testa detta:
'## -- skriv ut en länk till föregående sida --
If CInt(WichPage) > 1 Then
Response.Write "<A class=""blacklink"" href='" & strScriptName & "?" & _
"page=" & WichPage - 1 & "'><< Föregående</A> "
Else
Response.Write "<< Föregående "
End If
Du ser att jag lagt till extra dubbelfnuttar vid css-namnet.
cya,
patrikB
------------------
*Det tar sig sa han som hade eld i håret*
RinaldoMedlem sedan mars 20014 214 inlägg tack, det funkade utmärkt
------------------
Man kan ta den säkra vägen: Göra en stilren sida, snygg men lätt.
Eller så kan man ta den svåra: Mycket grafik och flashiga ting, och riskera att mislyckas.
RinaldoMedlem sedan mars 20014 214 inlägg tack, det funkade utmärkt
------------------
Man kan ta den säkra vägen: Göra en stilren sida, snygg men lätt.
Eller så kan man ta den svåra: Mycket grafik och flashiga ting, och riskera att mislyckas.
RinaldoMedlem sedan mars 20014 214 inlägg tack, det funkade utmärkt
------------------
Man kan ta den säkra vägen: Göra en stilren sida, snygg men lätt.
Eller så kan man ta den svåra: Mycket grafik och flashiga ting, och riskera att mislyckas.
Hej Patrik!
Jag kör ditt script och det fungerar bra men nu har jag 228 inlägg. 50 inlägg per sida. Det borde bli 5 sidor men det blir 4. De 28 sista sidorna kan man inte se?
(Jag har också laggt in din buggfix)
------------------
Alltid lär man sig något nytt varje dag...
PatrikBMedlem sedan mars 20002 836 inlägg Om du postar hur din kod ser ut så kan vi ta det därifrån.
Omöjligt att säga något om vad det kan vara utan att se koden.
cya,
PatrikB
------------------
*ordning och reda!, pengar på fredag.*
Här är koden:
'## -- hämta alla poster --
Function getRecords
DB_koppling
strSQL = "SELECT ff.msgId, ff.msgFrom, ff.msgTopic, ff.msgRead, ffup.msgUpdate, ffup.msgAntal FROM forum AS ff INNER JOIN forumUpdate AS ffup ON ff.msgID = ffup.msgID " & _
"WHERE ff.Thread_ID=0 AND ff.forumCategoryID=" & forumCategoryID & " ORDER BY ffup.msgUpdate DESC"
Set RecSet = Connect.Execute(strSQL)
IF NOT RecSet.EOF THEN
arrRecords = RecSet.GetRows
getRecords = arrRecords
End If
RecSet.Close
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing
End Function
'## -- skriver ut sidnavigeringen --
'## -- skriv ut föregående sida --
Sub PrevPage(ByVal WichPage)
Dim strScriptName
strScriptName = Request.ServerVariables("SCRIPT_NAME")
'## -- skriv ut en länk till föregående sida --
If CInt(WichPage) > 1 Then
Response.Write "<A href='" & strScriptName & "?alt=huvud&forumCategoryID=" & forumCategoryID & "&forumName=" & forumName & "&" & _
"page=" & WichPage - 1 & "' class=minilink>Föregående</A> - "
Else
Response.Write "<a href='forum.asp?alt=huvud&forumCategoryID=" & forumCategoryID & "&forumName=" & forumName & "' class=minilink>Föregående</a> - "
End If
End Sub
'## -- skriv ut nästa sida --
Sub NextPage(ByVal HowManyPages, ByVal WichPage)
Dim strScriptName
strScriptName = Request.ServerVariables("SCRIPT_NAME")
'## -- skriv ut en länk till nästa sida --
If CInt(WichPage) < CInt(HowManyPages) Then
Response.Write "<A href='" & strScriptName & "?alt=huvud&forumCategoryID=" & forumCategoryID & "&forumName=" & forumName & "&" & _
"page=" & WichPage + 1 & "' class=minilink>Nästa</A>"
Else
Response.Write " <a href='forum.asp?alt=huvud&forumCategoryID=" & forumCategoryID & "&forumName=" & forumName & "&page" & wichPage & "' class=minilink>Nästa</a>"
End If
End Sub
'## -- skriv ut sidnummer navigeringen --
Sub PageNumbers(ByVal HowManyPages, WichPage)
Dim strScriptName
Dim I
'## -- kolla om det finns några sidor --
If HowManyPages = 0 Then
Response.Write "0"
Exit Sub
End If
strScriptName = Request.ServerVariables("SCRIPT_NAME")
'## -- skriv ut länkar till sid nummer n.
'## Den sida som visas ska ej vara länkad --
For I = 1 To HowManyPages
If CInt(I) <> CInt(WichPage) Then
Response.Write "<A href='" & strScriptName & "?alt=huvud&forumCategoryID=" & forumCategoryID & "&forumName=" & forumName & "&" & _
"page=" & I & "' class=minilink>" & I & "</A> - "
Else
Response.Write "<B>" & I & "</B> - "
End If
Next
End Sub
'## -- vilken post ska pagingen börja på --
Function getStartID(ByVal PageSize, ByVal ViewPage) ' As Integer
Dim m_intStart
m_intStart = ((PageSize * ViewPage) - PageSize)
getStartID = m_intStart
End Function
Function countPages(ByVal HowManyRecords, ByVal PageSize)
Dim m_intTotalPages, m_intRest
m_intTotalPages = HowManyRecords / PageSize
If m_intTotalPages < 1 Then
m_intTotalPages = 1
Else
m_intRest = m_intTotalPages - CLng(m_intTotalPages)
If m_intRest > 0 AND m_intRest < 0.5 Then
m_intTotalPages = CLng(m_intTotalPages) + 1
Else
m_intTotalPages = CLng(m_intTotalPages)
End If
End If
'## -- return how many pages --
countPages = m_intTotalPages
End Function
'##***********************************************************************************
Dim intPageSize
Dim intPage
Dim intStartID
Dim color
Dim counter
Dim intTotalPages
Dim intTotalRecords
Dim u
'## -- vilken sida ska visas --
intPage = Request.QueryString("page")
If intPage = "" Then intPage = 1
'## -- hur många poster ska visas per sida --
intPageSize = 50
'## -- hämta alla records, hämtas med metoden getrows och returneras
'## som en array. --
arrRecords = getRecords
'## -- vilken post är den första --
intStartID = getStartID(intPageSize, intPage)
'## -- printa ut sidan som ska visas
'## alla poster finns i arrayen arrRecords som
'## kommer från funktionen getRecords --
IF IsArray(arrRecords) THEN
'Response.Write "E ju en array<BR>"
'## -- hur många records finns det totalt --
intTotalRecords = UBound(arrRecords,2) + 1
'## -- hur många sidor finns det i recordsetet --
intTotalPages = countPages(intTotalRecords, intPageSize)
'## -- skriv ut sidnavigerings menyn --
response.write "HTML"
Call PrevPage(intPage)
Call PageNumbers(intTotalPages,intPage)
Call NextPage(intTotalPages,intPage)
response.write "HTML"
For I = intStartID To ((intStartID + intPageSize) -1)
response.write "HTML"
IF I = UBound(arrRecords,2) THEN Exit For
Next
Det underliga är att det fungerar nu. Men nu är det 229 inlägg istället för 228?
------------------
Alltid lär man sig något nytt varje dag...
PatrikBMedlem sedan mars 20002 836 inlägg Kan inte se något fel så här på rak arm.
Om du nu tar bort ett inlägg så att du får 228 st inlägg igen, funkar det då eller får du samma fel igen?
Det jag kan tänka mig är att själva sidräkningen inte funkar, dvs funktionen countPages returnerar fel antal sidor. Men när jag testkör den funktionen med 228 records och 50 records per sida så returnerar den 5 sidor.
cya,
PatrikB
------------------
*ordning och reda!, pengar på fredag.*
svenMedlem sedan aug. 2001383 inlägg Skulle bara säga... Testade och fick scriptet att funka, dock efter en del gråa hår. Eftersom jag egentligen inte vet vad skriptet gör (i alla fall inte allt *L*). Men skam den som ger sig.
Men mitt i allt hårslitande sökte jag också hjälp på andra håll. Hittade då detta. Kan kanske vara bra för andra. PagingGenerator Jag testade och fick det att funka på en gång. Även om färgerna kanske inte var så görsnygga...
------------------
/Sven
jimpaMedlem sedan jan. 2001361 inlägg Hej,
Om jag har 2st tabeller i db
Forum och Forum_svar
Med paging-scriptet listar jag alla svar
SQL = "Select * From [Forum_svar] Where SvarID= " & [ID] & " Order by dte DESC"
Alla inlägg som medlemmarna postar räknas separat d.v.s en räknare i tabellen Forum och en i Forum_svar. För att kunna räkna ut den totala summan inlägg/medlem så måste jag samtidigt i lopen få med värdet från räknaren i tabellen Forum går det?
I så fall hur?!
mvh Jimpa
jimpaMedlem sedan jan. 2001361 inlägg Hello
Är det ingen som kan eller är min förklaring så dålig, så att ingen förstår?!
Mvh
LarsGMedlem sedan dec. 200012 464 inlägg Jag hade lite svårt att förstå. Vad har antal inlägg per medlem med saken att göra?
------------------
essentitia preter non sans multiplicandum
jorgenMedlem sedan feb. 20012 412 inlägg Hej!
Detta har ju inte med pagingen att göra. Men det enklaste för att slippa en massa joinar och extra SQL-frågor är att du har ett fält i tabellen för medlemmarna som du adderar med 1 varje gång en medlem gör ett inlägg. Eftersom jag antar att du vill visa vem som gjort inlägget får du ändå göra en join och då kan du lika gärna hämta det fältet också.
mvh Jörgen :)
------------------
Varför bråka när man kan kramas?
jimpaMedlem sedan jan. 2001361 inlägg Hej
En join!
Hur gör man då?
Det jag måste få med i min SQL är
Fältet Count i Tabellen Forum
Just nu ser min SQL-sats ut så här:
SQL = "Select * From [Forum_svar] Where SvarID= " & [ID] & " Order by dte DESC"
Mvh
[Redigerat av jimpa den 04 nov 2001]
[Redigerat av jimpa den 04 nov 2001]
jorgenMedlem sedan feb. 20012 412 inlägg Hej!
Hur ser dina tabeller ut?
och vad vill du presentera för data?
mvh Jörgen :)
------------------
Varför bråka när man kan kramas?
jimpaMedlem sedan jan. 2001361 inlägg Hej
Det jag måste få med i min SQL är
Fältet Count i Tabellen Forum
Just nu ser min SQL-sats ut så här:
SQL = "Select * From [Forum_svar] Where SvarID= " & [ID] & " Order by dte DESC"
Mvh