Er ikke et desideret paging system jeg er ude efter se www.test.brystplastik.dk/sider.jpg Dette screenshot er taget fra andet forum, er ligesom sådan jeg vil have på mit forum.
Det er vel et pagingsystem selvom du ikke har en forrige- og næste-knap på din side. Den metode jeg henviser til klarer også den funktionalitet du viser der, du skal som sagt bare undlade at generere forrige og næste navigationsknapperne.
...og ja, du har naturligvis ret i at paginering ikke skal bruge i selve oversigten, det er først når selve trådens indlæg skal vises at pagineringen kommer i spil.
Så smider man lige en løkke på sideantallet (pageCount) og genererer den liste af sidenumre/-links:
strSider = ""
for i = 1 to pageCount + 1 if len(strSider) > 0 then strSider = strSider & ", " end if strSider = "<a href="".?S=Forum&cmd=Traad&id=" & rsIndlaeg("id") &"&count=" & i & """>" & i " & "</a>" next
Ja, det er bla. fordi jeg er en båtnakke! Jeg har jo ikke medført de foregående sider i den streng med sidenumre. Så den kode jeg vist før skal se sådan ud i stedet:
strSider = ""
for i = 1 to pageCount + 1 if len(strSider) > 0 then strSider = strSider & ", " end if strSider = strSider & "<a href="".?S=Forum&cmd=Traad&id=" & rsIndlaeg("id") &"&count=" & i & """>" & i " & "</a>" next
strSider = "Side: " & strSider
Men ud over det, så undrer det mig at den viser side 1 og ikke den sidste side, f.eks. 3 eller 4 (for de indlæg der har mere end 30+ eller 40+). Hvis du rent faktisk mener at der står tallet 1 for alle, så skal du lige vise hele den kode du benytter for at generere disse sidenumre (det må så være en eller anden kombination af det jeg har foreslået i denne tråd).
<% intPage = Request("count") If isNumeric(intPage) = False Or intPage < 1 Then intPage = 1 End If
Set rsIndlaeg= Server.CreateObject("ADODB.RecordSet") strSQL = "select * from Forum where RID = 0 ORDER BY sidstebesked,dato desc" rsIndlaeg.CursorLocation = 3 rsIndlaeg.Open strsql, Conn, 1 %>
<table cellpadding="3" cellspacing="0" style="width:100%;" class="forumtabel"> <tr> <td style="padding-top:5px;"> <table cellpadding="3" cellspacing="3" style="width:100%;" class="forumliste"> <tr> <th style="text-align:left;">Tråd</th> <th>Sidste indlæg</th> <th>Svar</th> </tr> <% if rsIndlaeg.EOF or rsIndlaeg.BOF then%> <tr> <td colspan="3">Der er endu ikke oprettet nogle tråde..</td> </tr> <% response.redirect "./?S=Forum" else rsIndlaeg.PageSize = 10 rsIndlaeg.AbsolutePage = intPage intRecCount = rsIndlaeg.PageSize intPageCount = rsIndlaeg.PageCount
counter=0
Do While Not rsIndlaeg.EOF And intRecCount > 0
Set rsCount = Conn.Execute("SELECT COUNT(*) AS count1 FROM Forum WHERE RID = " & rsIndlaeg("ID") & "") Antal = rsCount("count1") rsCount. close set rsCount= Nothing strCount = antal+1
strSider = ""
for i = 1 to Antal + 1 if len(strSider) > 0 then strSider = strSider & ", " end if strSider = strSider & "<a href="".?S=Forum&cmd=Traad&id=" & rsIndlaeg("id") &"&count=" & i & """>" & i & "</a>" next
strSider = "Side: " & strSider
Set rsBilleder = Conn.Execute("SELECT * FROM Forumbilleder WHERE traadID = " & rsIndlaeg("ID") & "") if not (rsBilleder.eof or rsBilleder.bof) then strBilleder = "<img src=""images/photo.gif"" align=""right"" alt=""Der er tilføjet billeder i denne tråd"">" else strBilleder = "" end if
%>
<tr> <td><%=strBilleder%><a href="./?S=Forum&cmd=Traad&id=<%=rsIndlaeg("ID")%>" style="font-size:14px;"><b><%=rsIndlaeg("Overskrift")%></b></a> <div style="float:left;"><i>startet af <%=getusername(rsIndlaeg("brugerid"))%></i></div><div style="float:right;"><%=strsider%> </div>
</td> <td style="text-align:center;"><a title="Gå til seneste indlæg" href="./?S=Forum&cmd=Sidste&ID=<%=rsIndlaeg("ID")%>"><%=getdate(rsSeneste("dato"))%></a><%=ny%><br/><i>af <%=getusername(rsSeneste("brugerid"))%></i></td> <td style="text-align:center; vertical-align:middle;"><%=antal%></td> </tr> <% rsSeneste.close set rsSeneste = nothing
intRecCount = intRecCount - 1 rsIndlaeg.MoveNext loop end if Set rsIndlaeg=Nothing %>
Først og fremmest kan jeg ikke helt gennemskue hvorfor du lægger en til Antal efter at have hentet antallet af indlæg i forum-tabellen - Antal burde vel indeholde det faktisk antal og ikke antallet plus 1...?
Dernæst så skal du vel dividere antal med 10, når listen af tal skal genereres, for ellers er det jo bare en liste af tal som afspejler et nummer for hvert indlæg. Jeg har divideret pageCount med 10 i mit indlæg fra 25/02-2007 15:38:14 og det synes jeg du mangler...
"Først og fremmest kan jeg ikke helt gennemskue hvorfor du lægger en til Antal efter at have hentet antallet af indlæg i forum-tabellen - Antal burde vel indeholde det faktisk antal og ikke antallet plus 1...?"
Det antal jeg først finder, viser indlæg og tæller ikke første indlæg med(oprettet tråd), da det er første indlæg/ spørgsmål.. efterfølgende er svar i en tråd..
hvis du forstår? derfor smider jeg +1 på, når det handler om sideantal, for der skal jeg bruge alle poster..
Jo, det forstår jeg godt, men har du så prøvet at dividere med 10 som jeg foreslog? For det er vel det at der står et nummer pr. indlæg og ikke pr. side, der er et problem, er det ikke?
Nu ser min kode sådan her ud, men har en tråd med 11 poster, der viser den kun side 1 ?
strCount = antal+1
strSider = ""
for i = 1 to int(strCount / 10) if len(strSider) > 0 then strSider = strSider & ", " end if strSider = strSider & "<a href="".?S=Forum&cmd=Traad&id=" & rsIndlaeg("id") &"&count=" & i & """>" & i & "</a>" next
Jeg havde nu også lagt en til antal sider i mit eksempel fra indlægget 25/02-2007 15:38:14, hvilket du behændigt har undladt... :) - Bemærk i øvrigt at jeg ogs havde lavet en håndtering af at hvis antallet af sider var 0, så skulle der ikke lægges noget til... check (og brug) evt. det jeg foreslår :-)
Nej, jeg kan da også se at det jeg lavede ikke var helt det jeg skulle - jeg undskylder. Jeg ville egentlig gerne have lavet følgende:
strCount = int((antal+1) / 10)
if strCount = 0 then strCount = strCount + 1 end if
strSider = ""
for i = 1 to strCount if len(strSider) > 0 then strSider = strSider & ", " end if strSider = strSider & "<a href="".?S=Forum&cmd=Traad&id=" & rsIndlaeg("id") &"&count=" & i & """>" & i & "</a>" next
Den fungerer fint, men så er vi stadig tilbage på problemet at hvis der eks er 11 poster, hvor post 11 er på side 2, så skriver den alligevel kun at der er 1 side
Og heller ikke denne gang lykkes det for mig at få det gjort rigtigt, der skal naturligvis altid lægges en til:
strSider = ""
for i = 1 to int((antal+1) / 10) + 1 if len(strSider) > 0 then strSider = strSider & ", " end if strSider = strSider & "<a href="".?S=Forum&cmd=Traad&id=" & rsIndlaeg("id") &"&count=" & i & """>" & i & "</a>" next
if strSider = "<a href="".?S=Forum&cmd=Traad&id=" & rsIndlaeg("id") &"&count=1"" title=""Gå til side 1"">1</a>" then strSider = "" else strSider = "<i>Side: " & strSider & "</i>" end if
Jeg skulle mene det var noget med at kontrollere antallet af sider inden der genereres en pager:
strSider = ""
if int((antal+1) / 10) + 1 > 1 then for i = 1 to int((antal+1) / 10) + 1 if len(strSider) > 0 then strSider = strSider & ", " end if strSider = strSider & "<a href="".?S=Forum&cmd=Traad&id=" & rsIndlaeg("id") &"&count=" & i & """>" & i & "</a>" next
Jeg vil tro det bare er et spørgsmål om at fjerne den ene der lægges til antal inden divisionen, for så vil det vel passe (vil det ikke):
strSider = ""
if int(antal / 10) + 1 > 1 then for i = 1 to int(antal / 10) + 1 if len(strSider) > 0 then strSider = strSider & ", " end if strSider = strSider & "<a href="".?S=Forum&cmd=Traad&id=" & rsIndlaeg("id") &"&count=" & i & """>" & i & "</a>" next
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.