webForumDet fria alternativet

Nästa bild FSO

ASP

5 svar · 460 visningar · startad av paddan

Medlem sedan dec. 2002299 inlägg
Frågan#1

Hej!
Den här kodsnutten slupar 1 bild i en mapp...
Men jag skulle vilja ha två knapar, en "nästa bild" och en föregående...går det att lösa på något vis??

	<%				
					Set FSO  = Server.CreateObject("Scripting.FileSystemObject")
					Set Mapp = FSO.GetFolder(Server.MapPath("foton/"))
					
					
						If Mapp.Files.Count = 0 Then
							Response.Write "Inga bilder inlagda än!"
						Else
							For Each File In Mapp.Files
							If right( File.Name, 3 ) = "jpg" then
								strImage = strImage & File.Name &";"
								end if
							Next
							arrImages = Split(strImage, ";")
						End If
					
					
						
						If IsArray(arrImages) Then
												randomize
							rndNumber = Int(Rnd * UBound(arrImages))
							Response.Write "<a href=""default.asp?page=2""><img src=""foton/"& arrImages(rndNumber) &"""  width=""380"" height=""285""></a>"
							
						End If
						
			%>

Mvh Martin

Medlem sedan jan. 2003438 inlägg
#2

Tjena Paddan, vet inte riktigt hur det går att lösa i din kod men du kanske kan skicka en Request.Querystring.

Här kommer en kod förändring så tre bilder visas, föregående - Huvud - Nästa

  ' Gör att om rndNumber träffar första filen, så skall nästa bild starta om från slutet
  If Clng(rndNumber-1) = -1 Then : prevImg =  Mapp.Files.Count-1 :  Else prevImg = rndNumber-1 : End if
  Response.Write "<a href=""default.asp?page=2""><img src=""foton/"& arrImages(prevImg) &"""  width=""380"" height=""285""></a>"

  Response.Write "<a href=""default.asp?page=2""><img src=""foton/"& arrImages(rndNumber) &"""  width=""380"" height=""285""></a>"

  ' Gör att om rndNumber träffar sista filen, så skall nästa bild starta om från början
  If rndNumber+1 = Mapp.Files.Count Then : nextImg = 0 Else nextImg = rndNumber+1 : End if
  Response.Write "<a href=""default.asp?page=2""><img src=""foton/"& arrImages(nextImg) &"""  width=""380"" height=""285""></a>"
Medlem sedan dec. 2002299 inlägg
#3

Oki...men dte behöver inte vara slumpat...har du några funderingar....tänkte också questring men vet inte hur man ska skriva det!

Medlem sedan jan. 2003438 inlägg
#4

Nu gör det så att den slumpar slå länge man inte gått till föregående eller nästa bild.

If IsArray(arrImages) Then
  randomize 
  rndNumber = Int(Rnd * UBound(arrImages))

  strImage = Clng(Request.QueryString("img"))
  If Request.QueryString("img") = "" Then : strImage = rndNumber+1 : End if

  If Request.QueryString("img") = "" Then : MainImg = arrImages(rndNumber) : Else MainImg = arrImages(strImage-1) : End If 

  ' Gör att om rndNumber träffar första filen, så skall nästa bild blid start om från slutet
  If strImage-1 = 0 Then : prevImg =  Mapp.Files.Count :  Else prevImg = strImage-1 : End if
    
  Response.Write "<a href=""default.asp?page=2""><img src=""foton/"& MainImg &"""  width=""380"" height=""285""></a>"

  ' Gör att om rndNumber träffar sista filen, så skall nästa bild blid start om från början
    If strImage = Mapp.Files.Count Then : nextImg = 1 Else nextImg = strImage+1 : End if

  If Request.QueryString("img") = "" Then : ImageValue = rndNumber+1 : Else ImageValue = strImage : End If
  Response.Write "<br>"
  Response.Write "<a href='test.4.asp?img="&prevImg&"'>Föregående</a>"
  Response.Write " [Bild "& ImageValue &"] "
  Response.Write "<a href='test.4.asp?img="&nextImg&"'>Nästa</a>"
End If
Medlem sedan jan. 2003438 inlägg
#5

Har lekt lite till och gjort en ny förändring och lagt till dina knappar, nu kvarstår endast problemet med att när sidan skall reload så finns det värde i POST och reloaden funkar inte som den skall.

Annars

If IsArray(arrImages) Then
  randomize 
  rndNumber = Int(Rnd * UBound(arrImages))

  If NOT Request.Form("StringPrevImg") = "" THEN
   strImage = Request.Form("StringPrevImg")
  Else
    strImage = Request.Form("StringNextImg")
  End if

  If strImage = "" Then : strImage = rndNumber+1 : End if

  If strImage = "" Then : MainImg = arrImages(rndNumber) : Else MainImg = arrImages(strImage-1) : End If 

  ' Gör att om rndNumber träffar första filen, så skall nästa bild blid start om från slutet
  If Clng(strImage-1) = 0 Then : prevImg =  Mapp.Files.Count :  Else prevImg = strImage-1 : End if
    
  Response.Write "<a href=""default.asp?page=2""><img src=""foton/"& MainImg &"""  width=""380"" height=""285""></a>"

  ' Gör att om rndNumber träffar sista filen, så skall nästa bild blid start om från början
    If Clng(strImage) = Mapp.Files.Count Then : nextImg = 1 Else nextImg = strImage+1 : End if

  If strImage = "" Then : ImageValue = rndNumber+1 : Else ImageValue = strImage : End If

  Response.Write "<div style='float:left;'><form method='POST' action='test.4.asp'>"&_
		  "<input type='hidden' name='StringPrevImg' value='"& prevImg &"'>"&_
		  "<input type='submit' value='Föregående'  name='submit'></form></div>"

  Response.Write "<div style='float:left;'><form method='POST' action='test.4.asp'> [Bild "& ImageValue &"] </div>"

  Response.Write "<div style='float:left;'><form method='POST' action='test.4.asp'>"&_
		  "<input type='hidden' name='StringNextImg' value='"& nextImg &"'>"&_
		  "<input type='submit' value='Nästa' name='submit'></form></div>"
End If

/r
Har även skapat en tråd i JavaScript, DHTML forumet för att se om det går att få bukt på reload "problemet".
http://www.webforum.nu/showthread.php?s=&threadid=128595

Tänken är ju att det skall slumpning på bilderna varje gång någon kör en reload, men då man trycker på nästa så skall den vandra med variabel +1 eller -1.

Vi för se om det går att lösa :)

Medlem sedan dec. 2002299 inlägg
#6

Jag tackar för all hjälp!

Mvh martin!

263 ms totalt · 3 externa anrop · v20260731065814-full.767b4345
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)