Avatar billede bobbedude Nybegynder
20. oktober 2006 - 20:17 Der er 7 kommentarer og
1 løsning

Paging uden ADODB

Eksemplet fra activedeveloper kan jeg ikke bruge da det er ernormt langsom.


Min DB er MySql og lige nu trækker jeg mine data ud med LIMIT og har så bare en FOR løkke der laver 1 2 3 4 5 6 7 8 9 osv.
Problemet er bare at den bliver ved med at køre også selv om der ikke er nogen resultater.

lave to SQL sætninger en til at lave et Count med og en der henter indholdet, nu skal jeg bare finde ud af hvordan jeg laver en tæller der kun viser de resultater der er.

Grunden til at jeg ikke vil bruge eksemplet fra Aktivdeveloper er at det jeg har nu er gennemsnit 2 sekunder om at hente indholdet mens den fra Aktivdeveloper kan være helt op til 23 sekunder om det samme.
Avatar billede bondester Nybegynder
21. oktober 2006 - 00:49 #1
Er ikke helt med på hvad du spørger om :-|

Men går ud fra det er at din FOR løkke stopper når der ikke er flere resultater.

Det gøres ved at dividere din COUNT med antallet af emner / billeder på siden. Med mindre du får et heltal ud af divisionen, køres det igennem INT() og du plusser en til...

Kunne se således ud:
Set rs = Conn.Execute("SELECT COUNT(*) AS ""Antal"" FROM db")
intAntalSider = rs("antal")/9 '//Går ud fra der skal være 9 pr. side

If intA
Avatar billede bondester Nybegynder
21. oktober 2006 - 00:51 #2
Sorry fingeren smuttede lige ;-)


Set rs = Conn.Execute("SELECT COUNT(*) AS ""Antal"" FROM db")
intAntalSider = rs("antal")/9 '//Går ud fra der skal være 9 pr. side

If intAntalSider <> INT(intAntalSider) Then
  intAntalSider = INT(intAntalSider)+1
End If

For i = 1 To intAntalSider
  Response.Write "Side " & i
Next
Avatar billede bobbedude Nybegynder
21. oktober 2006 - 01:09 #3
men hvad nu hvis antal ikke går op i pr.side.visning ?
Avatar billede bobbedude Nybegynder
21. oktober 2006 - 01:10 #4
det er For løkken jeg spørger om jo
Avatar billede bondester Nybegynder
21. oktober 2006 - 11:39 #5
Det er jo nettop derfor der er lagt en In sætning ind... Hvis intAntalSider ikke er et heltal rundes det ned og der plusses en til.

På den måde sikrer man sig at alle poster bliver vist.
Avatar billede tjaz Nybegynder
23. oktober 2006 - 11:59 #6
Hvis din select til at hente indholdet med f.eks. hedder:

"SELECT * FROM data WHERE ejeren = 231 LIMIT 0, 9" skal din count hedde:
"SELECT COUNT(*) AS antal FROM data WHERE ejeren = 231"

så kan du bruge rs("antal") (den nedereste sql sætning) til at finde antallet af sider du skal bruge og den øvereste til at udskrive dem med.
Avatar billede bobbedude Nybegynder
23. oktober 2006 - 12:05 #7
jeg har klaret det smid et svar det virker perfekt
Avatar billede tjaz Nybegynder
23. oktober 2006 - 12:06 #8
oki :)
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