26. oktober 2002 - 21:19Der 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"
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(" ") 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>
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....
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(" ") 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>
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:
>>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"
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>
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.