Avatar billede lightbrain Nybegynder
26. oktober 2002 - 21:19 Der er 10 kommentarer og
1 løsning

Fejl i vis-billed-script

Hej

Jeg har et script, hvor man kan bladre mellem ens uploadede billeder, men hvis jeg bladre mod enden (altså klikker på "Næste" en masse gange), så kommer den med nedenstående fejl. Hvorfor?

Subscript out of range: '520'
/test/artikel1-0.asp, line 63
Dvs. linien neden under følgende linie: "if nesteside <> 1 then"

____________________________________________________

<html>
<head>
<title></title>
</head>

<body>
<div align="center">

<fieldset style="padding: 2">
<legend align="center"><font face="Trebuchet MS">Vælg billede til ny artikel</font></legend>
<p>&nbsp;</p>

<table width="100%" border="0">
<%
billedeSti = "/grafik/artikler/"
antalBillederPrSide = 50
antalBillederPrRekke = 5


if Request.QueryString("billede") = "" then
  start = request.querystring("start")
  if start = "" then start = 0

  Set fs = CreateObject("Scripting.FileSystemObject")
  Set f = fs.GetFolder(server.mappath(billedeSti))

  Set fc = f.Files
  For Each billed in fc
    arrayBuild = arrayBuild & billed.name & "|"
  next
  arrayBuild = left(arrayBuild, (len(arrayBuild) - 1))
 
  myArray = Split(arrayBuild, "|")

  Antalsider = int(ubound(myarray) / antalBillederPrSide)
  antal = 0
  for i = start to (start + antalBillederPrSide-1)
    if not i > ubound(myarray) then
      if antal = 0 then Response.Write "<TR>"
%><font face="Trebuchet MS"> </font>
<td width="<%=Int(antalBillederPrRekke/100)%>"><p align="center">
<font face="Trebuchet MS">
<a href="artikel1.asp?kategori=<%response.write Request.QueryString("kategori")%>&titel=<%response.write Request.QueryString("titel")%>&beskrivelse=<%response.write Request.QueryString("beskrivelse")%>&link=<%response.write Request.QueryString("link")%>&link1=<%response.write Request.QueryString("link1")%>&link2=<%=billedeSti%><%=myArray(i)%>&datoPublikation=<%response.write Request.QueryString("datoPublikation")%>">
<IMG SRC="<%=billedeSti%><%=myArray(i)%>" border="1" color="black">
</a></td>
<%
    else
      nesteside = 1
    end if

    antal = antal + 1
    if antal = 5 then
      Response.Write "</TR>"
      antal = 0
    end if
  next
  if antal > 0 then Response.Write "</TR>"
%> </font>
  </table>
  <center>
<%
  if start <> 0 then
    response.write "<font face='Trebuchet MS'><a href=""?kategori=" & Request.QueryString("kategori") & "&titel=" & Request.QueryString("titel") & "&beskrivelse=" & Request.QueryString("beskrivelse") & "&link=" & Request.QueryString("link") & "&link1="& Request.QueryString("link1") & "&link2=" & myArray(i) & "&datoPublikation=" & Request.QueryString("datoPublikation") & "&start=" & (start - 50) & """>Forrige</a>"
  end if
  response.write("&nbsp;")
  if nesteside <> 1 then
    'response.write "<font face='Trebuchet MS'><a href=""?start=" & (start + 50) & """>Næste</a>"
    response.write "<font face='Trebuchet MS'><a href=""?kategori=" & Request.QueryString("kategori") & "&titel=" & Request.QueryString("titel") & "&beskrivelse=" & Request.QueryString("beskrivelse") & "&link=" & Request.QueryString("link") & "&link1="& Request.QueryString("link1") & "&link2=" & myArray(i) & "&datoPublikation=" & Request.QueryString("datoPublikation") & "&start=" & (start + 50) & """>Næste</a>"
  end if
%>
  </center>
<%
else
%>
  <tr><td align="center">
  <font face="Trebuchet MS">
  <img SRC="<%=Request.QueryString("billede")%>" border="1"> </font>
  <p align="center"><font face="Trebuchet MS"><a href="java script:history.back();">Tilbage</a></font></p>
  </td>
  </tr>
  </table>
<%
end if %>
</div>
</fieldset>
</body>
</html>
Avatar billede andersaaa Nybegynder
27. oktober 2002 - 15:29 #1
Jamen der er da et problem hvis der ikke er 50 billeder i mappen ???
Du er nødt til at checke først for mange billeder der er i mappen !
Avatar billede eagleeye Praktikant
27. oktober 2002 - 19:35 #2
Det er fodi denne  myArray(i)  på den sidste side ikke har en værdi eller man kommer uden for arrayet længde med i.

Men så vidt jeg kan se vil fejle også komme i linien lige efter denne:

  if start <> 0 then
   

denne link2= myArray(i) vil gøre at Forrig og Næste har en querstring som indeholder navet på føste billede på næste side. Når man kommer til sidste side vil man med myArray(i) få en fejl da der ikke er noget første billed på næste side....

Har du overhoved behov for link2 på Forrige og Næste linket???

Man kan nemlig ikke bare side myArray(i-1) uden vidre det vil kun virke hvis der er 49 billeder på sidste side... Da det loop som udskriver ikke stopper efter sidste fil er nået men stopper efter 50 gennemløb....
Avatar billede lightbrain Nybegynder
27. oktober 2002 - 19:37 #3
Jeg er ikke så rutineret, så prøv bare at ændre i koden, og så skal jeg nok afprøve om det virker.
Avatar billede eagleeye Praktikant
27. oktober 2002 - 19:39 #4
Hvis du skal havde link2 med så ret de to linier og ændre det til
myArray(i-1)

Denn for Forrisge:

response.write "<font face='Trebuchet MS'><a href=""?kategori=" & Request.QueryString("kategori") & "&titel=" & Request.QueryString("titel") & "&beskrivelse=" & Request.QueryString("beskrivelse") & "&link=" & Request.QueryString("link") & "&link1="& Request.QueryString("link1") & "&link2=" & myArray(i-1) & "&datoPublikation=" & Request.QueryString("datoPublikation") & "&start=" & (start - 50) & """>Forrige</a>"



Så skal denne lille else del rette:

    else
      nesteside = 1
    end if

Til dette med end en exit for så stopper udskrining loopet og man kan så bruge i-1 til de to links:


    else
      nesteside = 1
      exit for
    end if
Avatar billede eagleeye Praktikant
27. oktober 2002 - 19:39 #5
skal jeg vise hele koden?
Avatar billede lightbrain Nybegynder
27. oktober 2002 - 19:46 #6
ja, det tror jeg vidst ;)
Avatar billede eagleeye Praktikant
27. oktober 2002 - 19:53 #7
ok her er hele filen men de ændring jeg omtalte:

<html>
<head>
<title></title>
</head>

<body>
<div align="center">

<fieldset style="padding: 2">
<legend align="center"><font face="Trebuchet MS">Vælg billede til ny artikel</font></legend>
<p>&nbsp;</p>

<table width="100%" border="0">
<%

billedeSti = "/grafik/artikler/"
antalBillederPrSide = 50
antalBillederPrRekke = 5


if Request.QueryString("billede") = "" then
  start = request.querystring("start")
  if start = "" then start = 0

  Set fs = CreateObject("Scripting.FileSystemObject")
  Set f = fs.GetFolder(server.mappath(billedeSti))

  Set fc = f.Files
  For Each billed in fc
    arrayBuild = arrayBuild & billed.name & "|"
  next
  arrayBuild = left(arrayBuild, (len(arrayBuild) - 1))
 
  myArray = Split(arrayBuild, "|")

  Antalsider = int(ubound(myarray) / antalBillederPrSide)
  antal = 0
  for i = start to (start + antalBillederPrSide-1)
    if not i > ubound(myarray) then
      if antal = 0 then Response.Write "<TR>"
%><font face="Trebuchet MS"> </font>
<td width="<%=Int(antalBillederPrRekke/100)%>"><p align="center">
<font face="Trebuchet MS">
<a href="artikel1.asp?kategori=<%response.write Request.QueryString("kategori")%>&titel=<%response.write Request.QueryString("titel")%>&beskrivelse=<%response.write Request.QueryString("beskrivelse")%>&link=<%response.write Request.QueryString("link")%>&link1=<%response.write Request.QueryString("link1")%>&link2=<%=billedeSti%><%=myArray(i)%>&datoPublikation=<%response.write Request.QueryString("datoPublikation")%>">
<IMG SRC="<%=billedeSti%><%=myArray(i)%>" border="1" color="black">
</a></td>
<%
    else
      nesteside = 1
      exit for
    end if

    antal = antal + 1
    if antal = 5 then
      Response.Write "</TR>"
      antal = 0
    end if
  next
  if antal > 0 then Response.Write "</tr>"
%> </font>
  </table>
  <center>
<%
  if start <> 0 then
    response.write "<font face='Trebuchet MS'><a href=""?kategori=" & Request.QueryString("kategori") & "&titel=" & Request.QueryString("titel") & "&beskrivelse=" & Request.QueryString("beskrivelse") & "&link=" & Request.QueryString("link") & "&link1="& Request.QueryString("link1") & "&link2=" & myArray(i-1) & "&datoPublikation=" & Request.QueryString("datoPublikation") & "&start=" & (start - 50) & """>Forrige</a>"
  end if
  response.write("&nbsp;")
  if nesteside <> 1 then
    'response.write "<font face='Trebuchet MS'><a href=""?start=" & (start + 50) & """>Næste</a>"
    response.write "<font face='Trebuchet MS'><a href=""?kategori=" & Request.QueryString("kategori") & "&titel=" & Request.QueryString("titel") & "&beskrivelse=" & Request.QueryString("beskrivelse") & "&link=" & Request.QueryString("link") & "&link1="& Request.QueryString("link1") & "&link2=" & myArray(i-1) & "&datoPublikation=" & Request.QueryString("datoPublikation") & "&start=" & (start + 50) & """>Næste</a>"
  end if
%>
  </center>
<%
else
%>
  <tr><td align="center">
  <font face="Trebuchet MS">
  <img SRC="<%=Request.QueryString("billede")%>" border="1"> </font>
  <p align="center"><font face="Trebuchet MS"><a href="java script:history.back();">Tilbage</a></font></p>
  </td>
  </tr>
  </table>
<%
end if %>
</div>
</fieldset>
</body>
</html>
Avatar billede eagleeye Praktikant
27. oktober 2002 - 20:31 #8
du har defineret en variable som fortæller hvor mange billeder der skal vises på hver side, antalBillederPrSide i de to linier som laver linket til forrige/næste side bruger tallet 50 det kunne du ændre til antalBillederPrSide. Så de to if sætniger rettes til:


  if start <> 0 then
    response.write "<font face='Trebuchet MS'><a href=""?kategori=" & Request.QueryString("kategori") & "&titel=" & Request.QueryString("titel") & "&beskrivelse=" & Request.QueryString("beskrivelse") & "&link=" & Request.QueryString("link") & "&link1="& Request.QueryString("link1") & "&link2=" & myArray(i-1) & "&datoPublikation=" & Request.QueryString("datoPublikation") & "&start=" & (start - antalBillederPrSide) & """>Forrige</a>"
  end if
  response.write("&nbsp;")
  if nesteside <> 1 then
    'response.write "<font face='Trebuchet MS'><a href=""?start=" & (start + 50) & """>Næste</a>"
    response.write "<font face='Trebuchet MS'><a href=""?kategori=" & Request.QueryString("kategori") & "&titel=" & Request.QueryString("titel") & "&beskrivelse=" & Request.QueryString("beskrivelse") & "&link=" & Request.QueryString("link") & "&link1="& Request.QueryString("link1") & "&link2=" & myArray(i-1) & "&datoPublikation=" & Request.QueryString("datoPublikation") & "&start=" & (start + antalBillederPrSide) & """>Næste</a>"
  end if
Avatar billede lightbrain Nybegynder
28. oktober 2002 - 20:24 #9
>>eagleeye
Microsoft VBScript runtime error '800a0009'
Subscript out of range: '[number: 519]'
/test/artikel1-0.asp, line 64
Dvs. linien under "if start <> 0 then"

<html>
<head>
<title>Selvet.dk</title>
</head>

<body>
<div align="center">

<fieldset style="padding: 2">
<legend align="center"><font face="Trebuchet MS"></font></legend>


<table width="100%" border="0">
<%
billedeSti = "/grafik/artikler/"
antalBillederPrSide = 40
antalBillederPrRekke = 4


if Request.QueryString("billede") = "" then
  start = request.querystring("start")
  if start = "" then start = 0

  Set fs = CreateObject("Scripting.FileSystemObject")
  Set f = fs.GetFolder(server.mappath(billedeSti))

  Set fc = f.Files
  For Each billed in fc
    arrayBuild = arrayBuild & billed.name & "|"
  next
  arrayBuild = left(arrayBuild, (len(arrayBuild) - 1))
 
  myArray = Split(arrayBuild, "|")

  Antalsider = int(ubound(myarray) / antalBillederPrSide)
  antal = 0
  for i = start to (start + antalBillederPrSide-1)
    if not i > ubound(myarray) then
      if antal = 0 then Response.Write "<TR>"
%><font face="Trebuchet MS"> </font>
<td width="<%=Int(antalBillederPrRekke/100)%>"><p align="center">
<font face="Trebuchet MS">
<a href="artikel1.asp?kategori=<%response.write Request.QueryString("kategori")%>&titel=<%response.write Request.QueryString("titel")%>&beskrivelse=<%response.write Request.QueryString("beskrivelse")%>&link=<%response.write Request.QueryString("link")%>&link1=<%response.write Request.QueryString("link1")%>&link2=<%=billedeSti%><%=myArray(i)%>&datoPublikation=<%response.write Request.QueryString("datoPublikation")%>">
<IMG SRC="<%=billedeSti%><%=myArray(i)%>" border="1" color="black">
</a></td>
<%
    else
      nesteside = 1
    end if

    antal = antal + 1
    if antal = 4 then
      Response.Write "</TR>"
      antal = 0
    end if
  next
  if antal > 0 then Response.Write "</TR>"
%> </font>
  </table>
  <center>

<%
  if start <> 0 then
    response.write "<font face='Trebuchet MS'><a href=""?kategori=" & Request.QueryString("kategori") & "&titel=" & Request.QueryString("titel") & "&beskrivelse=" & Request.QueryString("beskrivelse") & "&link=" & Request.QueryString("link") & "&link1="& Request.QueryString("link1") & "&link2=" & myArray(i-1) & "&datoPublikation=" & Request.QueryString("datoPublikation") & "&start=" & (start - antalBillederPrSide) & """>Forrige</a>"
  end if
  response.write("&nbsp;")
  if nesteside <> 1 then
    'response.write "<font face='Trebuchet MS'><a href=""?start=" & (start + 50) & """>Næste</a>"
    response.write "<font face='Trebuchet MS'><a href=""?kategori=" & Request.QueryString("kategori") & "&titel=" & Request.QueryString("titel") & "&beskrivelse=" & Request.QueryString("beskrivelse") & "&link=" & Request.QueryString("link") & "&link1="& Request.QueryString("link1") & "&link2=" & myArray(i-1) & "&datoPublikation=" & Request.QueryString("datoPublikation") & "&start=" & (start + antalBillederPrSide) & """>Næste</a>"
  end if
%>
  </center>
<%
else
%>
  <tr><td align="center">
  <font face="Trebuchet MS">
  <img SRC="<%=Request.QueryString("billede")%>" border="1"> </font>
  <p align="center"><font face="Trebuchet MS"><a href="java script:history.back();">Tilbage</a></font></p>
  </td>
  </tr>
  </table>
<%
end if %>
</fieldset>
</div>
</body>
</html>
Avatar billede eagleeye Praktikant
28. oktober 2002 - 21:10 #10
der manger exit for i denne else del:

    else
      nesteside = 1
    end if


Sådan her:
    else
      nesteside = 1
      exit for          '<------skal med for i ikke bliver mere end +1 for stor
    end if
Avatar billede lightbrain Nybegynder
30. oktober 2002 - 18:31 #11
Tak mester - det virker :-)
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