Avatar billede bootlab Nybegynder
14. december 2000 - 22:27 Der er 11 kommentarer og
1 løsning

Del kagen!

Hvordan deler jeg mine sider op, så at den kun viser 20 poste fra database pr. side?

Den skal selfølgelig også selv sørger for,
at der kommer en \"Næste\" og en \"Forrige\".

Avatar billede ares Nybegynder
14. december 2000 - 22:30 #1
Paging hedder det med fagsprog og hvis du søger her på eksperten eller på www.activeserverpages.dk
finder du helt sikkert noget.

Ares
Avatar billede ares Nybegynder
14. december 2000 - 22:33 #2
prøv med noget i stil med

intPage = Request(\"page\")
If isNumeric(intPage) = False Or intPage < 1 Then
  intPage = 1
End If

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

StrComment = rs(\"kommentar\")

intRecCount = intRecCount - 1
  rs.MoveNext
  Loop
End If
rs.Close
Set rs = Nothing

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 & \">&lt;&lt;</a>\"
Else
  Response.Write \"&lt;&lt;\"
End If

Response.Write \"&nbsp;\"

If Clng(intPage) < Clng(intPageCount) Then
  Response.Write \"<a href=paging.asp?page=\" & intPage + 1 & \">&gt;&gt;</a> \"
Else
  Response.Write \"&gt;&gt;\"
End If


Ares
Avatar billede vandhunden Nybegynder
14. december 2000 - 23:01 #3
Sørg for at angivelserne kommer med fra side til side fx i URL\'en.

http://www.site.dk/vis.asp?start=0&antal=20

Så henter du dem bare i din SQLstreng:

SQL=\"SELECT * FROM data WHERE ID>\"&request(\'start\')&\" AND ID<\"&request(\'start\') & request(\'antal\')

startnext = request(\"start\")+request(\"antal\")

Så trækker du dem ellers ud som normalt, og på dit \"næste\"-link skriver du fx.

<a href=\"vis.asp <%=\'?start=\' & startnext & \'&antal=\' & request(\'antal\')%>\">NÆSTE</a>

Jeg har ikke testet det, håber du kan se systemet.

/Andreas
Avatar billede sv Nybegynder
15. december 2000 - 07:56 #4
Vandh>>> Hvad nu hvis man så sletter posterne med id 21,22,23,24,25,26
og så bruger
vis.asp?start=20&antal=10
Så får man kun 3-5 poster, istedet for de 10 ??
Avatar billede smurfen Nybegynder
21. december 2000 - 04:22 #5
NEJ! paging på den måde er den sygeste LORTEløsning det der sker er at du hiver alle records ud, derefter alle-20, så alle-40 og så fremdeles..

ISTEDET:

Brug SELECT TOP..

Jeg gjorde det samme på tomsnak..
serveren var ulideligt langsom.. efter jeg gjorde det er der kommet knald på igen.. såeh..

Hvis du ønsker jeg skal uddbyde vil jeg MEGET gerne. men ikke lige nu
Avatar billede bootlab Nybegynder
21. december 2000 - 19:24 #6
Hey allesemmen !
Jeg har stadig ikke fået lært Paging...
Avatar billede bootlab Nybegynder
21. december 2000 - 19:28 #7
Smurfen > Du må meget gerne uddybe..når du får tid :)

Jeg er også villig til at satse flere point,
for at få et eksempel der virker...
Så kan studere det og så lære funktionen..

Merry coding and a happy script

Boot
Avatar billede bootlab Nybegynder
21. december 2000 - 19:38 #8
Så er der 150 point istedet for 60......
Avatar billede lp Nybegynder
21. december 2000 - 20:53 #9
og databasen er en access ik....hmmm.....?
Avatar billede bootlab Nybegynder
21. december 2000 - 20:58 #10
Yepper....
Avatar billede smurfen Nybegynder
22. december 2000 - 11:38 #11
ok
nu kommer det til at gå meget hurtigt :)

intTopNumber = Request.QueryString(\"intTopNumber\")
intRecordNumber = Request.QueryString(\"intRecordNumber\")

If intRecordNumber = \"\" Or intRecordNumber < 0 Then
    intRecordNumber = 0
End If
If intTopnumber = \"\" Or intTopnumber < 0 Then
    intTopNumber = 20
End If
strSQL =    \"SELECT TOP \" & intTopnumber &_
            \" * \" &_
            \" FROM tblObjectAll\"
           
Set objRS = objConn.Execute(strSQL)

\'flytter til den record vi forlod
objRS.Move(intRecordNumber)
Do Until objRS.EOF
    \'udskriv record
    intRecordNumber = intRecordNumber + 1
    objRS.MoveNext   
Loop

If intTopNumber <> 20 Then \'hvis vi ikke er på første side..
    \' link til samme side, tilbage i recordsættet
    \'med querystring
    \'intRecordNumber=\" & intRecordNumber-40 & \"&intTopNumber=\" & intTopNumber-20
End If

\'Man kunne eventuelt lave noget her hvor man sammenligner antallet af intRecordnumber
\'med antallet af records.. og hvis intRecordnumber er højere udskriver man ikke næste knap               

\'link til samme side, frem i recordsættet           
\'med dette i querystring
\'&intRecordNumber=\" & intRecordNumber & \"&intTopNumber=\" & intTopNumber+20

objRS.Close
Set objRS = Nothing

\'dette er meget teoretisk, men jeg har haft
\'det kørende.. det er noget jeg har sakset
\'ud af en fil..
\'så hvis det ikke virker
\'så send mig lige et parliner.. :)
Avatar billede bootlab Nybegynder
22. januar 2001 - 20:49 #12
Så lukker vi
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester