26. marts 2004 - 09:42Der er
25 kommentarer og 1 løsning
Bladrefunktion der viser antal sider
jeg har en funktion der viser hvor mange sider brugeren kan bladre i produkterne, men den må maks vise 10 sider af gangen og så skal der komme sådan en pil så den viser side 11 - 20. hvordan kan det lade sig gøre at implementere det i nedenstående kode ?
<% TM_counter = 0 For i = 1 to rsBestBuy_total Step MM_size TM_counter = TM_counter + 1 TM_PageEndCount = i + MM_size - 1 if TM_PageEndCount > rsBestBuy_total Then TM_PageEndCount = rsBestBuy_total if i <> MM_offset + 1 then Response.Write("<a href=""" & Request.ServerVariables("URL") & "?" & MM_keepMove & "offset=" & i-1 & """>") Response.Write(TM_counter & "</a>") else Response.Write("<b>" & TM_counter & "</b>") End if if(TM_PageEndCount <> rsBestBuy_total) then Response.Write(" | ") next %>
der bliver stillet samme spørgsmål nede i teksten:
Kommentar fra BoyScout (25-10-2001) Har du et tip til, hvordan man får listen over pages til kun at vise f.eks. max 3 stk. af gangen? F.eks. start med side 1 << | 1 | 2 | 3 | >>
Når man så klikker på side 3, så skal den vise << | 2 | 3 | 4 | >>
my bad nute - jeg må stadig ligge og sove... men jeg kan ikke se hvilket recordset han hæfter koden på...
<% Const cTopicPrPage = 15 'Antal Threats/Topics/Emner pr. side, når man lister i forum. Const cMaxIndex = 9 'Antal Sider i index. Dim ii, LavLimit, HojLimit, LavPunktum, HojPunktum
'Index over Paging START If intPageCount > cMaxIndex Then If intPage >= (cMaxIndex\2) Then HojLimit = intPage + (cMaxIndex\2) LavLimit = intPage - (cMaxIndex\2) End If If intPage < (cMaxIndex\2) Then HojLimit = intPage + (cMaxIndex\2) LavLimit = intPage - (cMaxIndex\2) End If If LavLimit < 1 Then LavLimit = 1 HojLimit = cMaxIndex + 1 HojPunktum = "... " End If If HojLimit > intPageCount Then HojLimit = intPageCount LavLimit = HojLimit - cMaxIndex LavPunktum = "... " End If Else LavLimit = 1 HojLimit = intPageCount End If Response.Write "<table>" Response.Write "<tr><td> Sider: (" & intPageCount & ") " Response.Write "<a href=""?side=1""><</a> " Response.Write LavPunktum For ii = (LavLimit) to HojLimit If cInt(intPage) = cInt(ii) Then Response.Write "[" & ii & "] " Else Response.Write "<a href=?side=" & ii & ">" & ii & "</a> " End If Next Response.Write HojPunktum Response.Write "<a href=""?side=" & intPageCount & """>></a>" Response.Write "</td></tr></table>" 'Index over Paging SLUT %>
det ser ud til at koden skal erstatte udskrivningen af links, i den orginale koden:
Set rs = Nothing
' ##### HER SKAL NOK KODEN IND #####
' ##### ALT KODEN NEDENFOR DETTE, I DEN ORGINALE KODE, SKAL SLETTES ##### Response.Write "<p>Gå til side " For intNum = 1 To intPageCount Response.Write "<a href=paging.asp?page=" & intNum & ">" & intNum & "</a> " Next
Response.Write "<p>" If Clng(intPage) > 1 Then Response.Write "<a href=paging.asp?page=" & intPage - 1 & "><<</a>" Else Response.Write "<<" End If
<% intPage = Request("page") If isNumeric(intPage) = False Or intPage < 1 Then intPage = 1 End If
Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT LinkURL FROM Links" strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/aspdigital/db/demo.mdb") rs.Open strSQL, strDSN, 1 If Not (rs.BOF Or rs.EOF) Then rs.PageSize = 10 rs.AbsolutePage = intPage intRecCount = rs.PageSize intPageCount = rs.PageCount Response.Write "<p><b>Side " & intPage & " af " & intPageCount & "</b></p>" Do While Not rs.EOF And intRecCount > 0 Response.Write rs("LinkURL") & "<br>" intRecCount = intRecCount - 1 rs.MoveNext Loop End If rs.Close Set rs = Nothing
Const cTopicPrPage = 15 'Antal Threats/Topics/Emner pr. side, når man lister i forum. Const cMaxIndex = 9 'Antal Sider i index. Dim ii, LavLimit, HojLimit, LavPunktum, HojPunktum
'Index over Paging START If intPageCount > cMaxIndex Then If intPage >= (cMaxIndex\2) Then HojLimit = intPage + (cMaxIndex\2) LavLimit = intPage - (cMaxIndex\2) End If If intPage < (cMaxIndex\2) Then HojLimit = intPage + (cMaxIndex\2) LavLimit = intPage - (cMaxIndex\2) End If If LavLimit < 1 Then LavLimit = 1 HojLimit = cMaxIndex + 1 HojPunktum = "... " End If If HojLimit > intPageCount Then HojLimit = intPageCount LavLimit = HojLimit - cMaxIndex LavPunktum = "... " End If Else LavLimit = 1 HojLimit = intPageCount End If Response.Write "<table>" Response.Write "<tr><td> Sider: (" & intPageCount & ") " Response.Write "<a href=""?side=1""><</a> " Response.Write LavPunktum For ii = (LavLimit) to HojLimit If cInt(intPage) = cInt(ii) Then Response.Write "[" & ii & "] " Else Response.Write "<a href=?side=" & ii & ">" & ii & "</a> " End If Next Response.Write HojPunktum Response.Write "<a href=""?side=" & intPageCount & """>></a>" Response.Write "</td></tr></table>" 'Index over Paging SLUT %>
den driller, jeg har ændret den, men den fejler i linie 21: rs.AbsolutePage = intPage
koden: <% intPage = Request("page") If isNumeric(intPage) = False Or intPage < 1 Then intPage = 1 End If
Set rs = Server.CreateObject("ADODB.Recordset") rs.ActiveConnection = MM_scandlines_STRING rs.Source = "SELECT * FROM Vin WHERE Salgstype = 'Best Buy' AND Aktiv_Dansk = 'Y'" rs.Open If Not (rs.BOF Or rs.EOF) Then rs.PageSize = 10 rs.AbsolutePage = intPage intRecCount = rs.PageSize intPageCount = rs.PageCount Response.Write "<p><b>Side " & intPage & " af " & intPageCount & "</b></p>" Do While Not rs.EOF And intRecCount > 0 Response.Write rs("LinkURL") & "<br>" intRecCount = intRecCount - 1 rs.MoveNext Loop End If rs.Close Set rs = Nothing
Const cTopicPrPage = 15 'Antal Threats/Topics/Emner pr. side, når man lister i forum. Const cMaxIndex = 9 'Antal Sider i index. Dim ii, LavLimit, HojLimit, LavPunktum, HojPunktum
'Index over Paging START If intPageCount > cMaxIndex Then If intPage >= (cMaxIndex\2) Then HojLimit = intPage + (cMaxIndex\2) LavLimit = intPage - (cMaxIndex\2) End If If intPage < (cMaxIndex\2) Then HojLimit = intPage + (cMaxIndex\2) LavLimit = intPage - (cMaxIndex\2) End If If LavLimit < 1 Then LavLimit = 1 HojLimit = cMaxIndex + 1 HojPunktum = "... " End If If HojLimit > intPageCount Then HojLimit = intPageCount LavLimit = HojLimit - cMaxIndex LavPunktum = "... " End If Else LavLimit = 1 HojLimit = intPageCount End If Response.Write "<table>" Response.Write "<tr><td> Sider: (" & intPageCount & ") " Response.Write "<a href=""?side=1""><</a> " Response.Write LavPunktum For ii = (LavLimit) to HojLimit If cInt(intPage) = cInt(ii) Then Response.Write "[" & ii & "] " Else Response.Write "<a href=?side=" & ii & ">" & ii & "</a> " End If Next Response.Write HojPunktum Response.Write "<a href=""?side=" & intPageCount & """>></a>" Response.Write "</td></tr></table>" 'Index over Paging SLUT %>
intPage = Request("page") If isNumeric(intPage) = False Or intPage < 1 Then intPage = 1 End If
og du har denne linie kode:
rs.AbsolutePage = intPage (linie 21)
hvis 'intPage' ikke indeholder noget, så vil den jo klart fejle. og siden dete er i denne linie det opstår en fejl, er det nærliggende at tjekke for om du faktisk har en værdi i denne variabel.
har du testet om den faktisk kommer ind i if setningen ? du må lære dig at teste for dine variabler eller hvordan scriptet opfører sig. hvis det er et problem med, i dette tilfælde 'intPage', så må du finde ud af (at 'debugge' som det hedder på fagsproget) hvad denne variabel indeholder. Du ved allerede at denne variabel får sin værdi fra querystringen, du ved hvor værdien bliver sat og du ved hvilken værdi du forventer ... så bør det jo være meget nemt:
Response.Write( "Request('page') = '" & Request("page") & "'<br>" ) intPage = Request("page") Response.Write( "intPage = '" & intPage & "'<br>" ) If isNumeric(intPage) = False Or intPage < 1 Then Response.Write( "If statement = True<br>" ) intPage = 1 End If Response.Write( "intPage = '" & intPage & "'" )
Hvis du sender med 'page=2' i din querystring, så bør denne stump kode resultere i dette:
Request('page') = '2' intPage = '2' intPage = '2'
alt andet vil være fejl. Hvis du får dette resultat, så er du nødt til "at følge" intPage variabelen helt ned til den linie hvor du skal bruge den. gør du noget ved den inden du skal bruge den i linie 21 ? ... prøv at finde ud hvorfor du ikke har en værdi i denne variabel. Det er *meget* svært for mig at sidde at debugge din kode ...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.