Avatar billede sunnyboy_55 Nybegynder
23. maj 2011 - 17:59 Der er 7 kommentarer og
1 løsning

Paging virker ikke!

Hej eksperter

I forbindelse med vores brugerliste er blevet noget lang til én side på skærmen, har jeg hentet nedenstående kode her på eksperten, og den skulle være meget nem, men der kommer ikke noget print, fejl angives som:

"Denne fejl (HTTP 500 intern serverfejl) betyder, at et serverproblem på det websted, som du besøger, forhindrede visning af websiden".

Min connection bruges i andre sammenhæng og virker fint.

Har nogen et bud på fejlen?

<% 

set conn = server.createobject("ADODB.connection")
conn.Open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=db.mitdomæne.dk; DATABASE=xxxxx; UID=xxxxx; PWD=xxxxxx;"

perpage=20

objRs.open "select count(*) as antal from bruger"
if not objRs.eof then 
antalrecords=objRs("antal")
else 
antalrecords=0
end if
objRs.close

sideantal=antalrecords/perpage
if sideantal>int(sideantal) then sideantal=sideantal+1

p=request.querystring("page")+0
if p<1 then p=1

startside=(p-1)*perpage
slutside=startside+perpage-1
if slutside>antalrecords then slutside=antalrecords

response.write "side "&p&"<br>"

response.write startside&"-"&slutside&"<br>"

objRs.open "select * from bruger"

if startside>0 then 
for x=1 to startside   
objRs.movenext 
next
end if

for x=1 to perpage 
response.write objRs("brugernavn")&"<br>" 
objRs.movenextnextobjRs.close

if p>1 then response.write "<a href='?page="&p-1&"'>forrige</a> "
if p<sideantal-1 then response.write "<a href='?page="&p+1&"'>næste</a>"

response.write "<br>"

for x=1 to sideantal 
response.write "<a href=?page="&x&">"&x&"</a> "

next

%>
Avatar billede keysersoze Ekspert
23. maj 2011 - 19:36 #1
funktioner -> internetindstillinger -> avanceret -> fjern kryds i "vis meddelelse om uskadelige http-fejl"

Vi har behov for en egentlig fejlbesked for at kunne gætte på noget.
Avatar billede sunnyboy_55 Nybegynder
23. maj 2011 - 20:30 #2
værsgo'

fik denne fejlmeddelse:

Microsoft VBScript compilation error '800a0410'

Invalid 'for' loop control variable

/paging.asp, line 83

for x=1 to sideantal
Avatar billede keysersoze Ekspert
23. maj 2011 - 23:42 #3
den løkke ser også noget farlig ud oversom x ikke forøges - så vil den køre uendeligt. Hvilken værdi har variablen sidetal? Og hvordan ser din egentlige SELECT ud?
Avatar billede sunnyboy_55 Nybegynder
24. maj 2011 - 07:53 #4
dine spørgsmål må fremgå af koden i mit første indlæg, og umiddelbart kan jeg ikke se hvad variablen sideantal er, men select ser sådan ud:"objRs.open "select * from bruger".

hvis det er en dårlig kode, kan du så evt. henvise til en anden - gerne enkel - som jeg kan arbejde videre på?

Mvh.
Avatar billede keysersoze Ekspert
24. maj 2011 - 08:22 #5
Når vi taler MySQL er det i hvert fald dårlig kode da SELECT bør køres sammen med LIMIT for ikke at hive flere records ud end nødvendigt.

http://web.archive.org/web/20070717012126/http://activedeveloper.dk/artikler/default.asp?articleid=279
Avatar billede sunnyboy_55 Nybegynder
24. maj 2011 - 09:01 #6
Tak, jeg hentede koden du anbefalede (troede ikke aktivedevoloper var aktivt længere?) og lagde koden ind på min side, men får denne fejlmelding:

Microsoft VBScript runtime error '800a01ca'

Variable uses an Automation type not supported in VBScript

/paging.asp, line 15

som er denne: intRecords = int(objRs("records"))


Hele koden uden connection ser sådan ud:

<%

'Først skal vi have antallet af poster
Set objRs = Conn.Execute("SELECT COUNT(*) AS records FROM bruger;")
intRecords = int(objRs("records"))
objRs.Close
Set objRs = Nothing

'Variabler til query´et
intPage = Request.QueryString("page")
if intPage = "" OR not isNumeric(intPage) then
  intPage = int(1)
else
  intPage = int(intPage)
end if
intPageSize = int(5)
intStart = intPage*intPageSize
intStart = intStart-intPageSize
intPages = int(intRecords/intPageSize)+1

Set objRs = Conn.Execute("SELECT * FROM bruger LIMIT " & intStart & ", " & intPageSize & ";")
 
  if objRs.EOF or objRs.BOF then
    Response.Write "Ingen poster"
  else
    Response.Write "<table border=""1"" cellpadding=""3"">"
      Response.Write "<tr>"
        Response.Write "<td><b>id</b></td>"
        Response.Write "<td><b>Site</b></td>"
      Response.Write "</tr>"
       
      Do until objRs.EOF
        Response.Write "<tr>"
          Response.Write "<td>" & objRs("id") & "</td>"
          Response.Write "<td><a href=""" & objRs("brugernavn") & """>" & objRs("email") & "</a></td>"
        Response.Write "</tr>"
      objRs.MoveNext
      Loop
    Response.Write "</table>"
  end if

objRs.Close
Set objRs = Nothing

'Udskriver en "sideliste"
For i = 1 to intPages
  if i = intPage then
    Response.Write "<b>" & i & "</b> "
  else
    Response.Write "<a href=""paging.asp?page=" & i & """>"
    Response.Write i
    Response.Write "</a> "
  end if
next

Conn.Close
Set Conn = Nothing
%>
Avatar billede sunnyboy_55 Nybegynder
24. maj 2011 - 13:53 #7
Hey keysersoze

Iveren løb af med mig, glemte at følge proceduren herinde, smid et svar så du kan få dine point.

Jeg oprettet nyt spørgsmål når ny kode er tjekket igen.

Tak for hjælpen.

Mvh. S
Avatar billede keysersoze Ekspert
24. maj 2011 - 17:15 #8
det er fint nok - har bare ikke haft tid til at følge op. activedeveloper er død i dens gamle form, men man kan være heldig at finde frem til sidens indhold alligevel.

prøv i første omgang int til cint - tag evt et kig her; http://www.eksperten.dk/spm/858023
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