webForumDet fria alternativet

Slumpa bild även från undermappar!

ASP

10 svar · 534 visningar · startad av paddan

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

HEj!
Behöver verkligen hjälp.---!!!!
Hej jag skulle vilja att detta sciptet även slumpar i från mappen under mappar också...!!!

Denna kod slumpar från en mapp:

	<%				
					Set FSO  = Server.CreateObject("Scripting.FileSystemObject")
					Set Mapp = FSO.GetFolder(Server.MapPath("bilder"))
					
					
						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=""bilder/"& arrImages(rndNumber) &"""  width=""680"" height=""510""></a>"
							
						End If
						
			%>

Men jag vill att den ska slumpa även från dess undermappar...
Hur gör man det???
Har försökt men får inte rätt på det!

Mvh Martin!

Medlem sedan nov. 20017 144 inlägg
#2

En rekursiv funktion

Function GetSubFolders(pfolder)
    Dim sFolders, fldr, file, MyPath

    For Each fldr In pfolder.SubFolders
        sFolders = sFolders & GetSubFolders(fldr)
    Next
    
    For Each file In pfolder.Files
		MyPath = Right(file.path, len(file.path) - len(rootname))
       	If Right(file.Name, 3) = "jpg" Then sFolders = sFolders & MyPath & file.name & ";"
    Next
	
    Set img = Nothing : Set fldr = Nothing
    GetSubFolders = sFolders
End function

Dim rootname, arrImages 
rootname =  Server.MapPath("bilder")
Set FSO  = Server.CreateObject("Scripting.FileSystemObject")
Set Mapp = FSO.GetFolder(rootname)

arrImages = Split(GetSubFolders(Mapp), ";")

Set Mapp = nothing : Set FSO = nothing

If IsArray(arrImages) Then
	randomize
	rndNumber = Int(Rnd * UBound(arrImages))
	Response.Write "<a href=""default.asp?page=2""><img src=""bilder/"& arrImages(rndNumber) &"""  width=""680"" height=""510""></a>"
End If
Medlem sedan nov. 20017 144 inlägg
#3

Hittas inga bilder kan du göra det i slutet i stället.

If IsArray(arrImages) Then
    '...
Else
    Response.write "Ingen Bild!"
End if
Medlem sedan dec. 2002299 inlägg
#4

Funkar nästan bra---
Nu skriver den ut filnamnet dubbelt....
Så här:

http://homepage.te.hik.se/student/ms22ja/skold/bilder//Kenso/Kenso_pa_bryggan.jpgKenso_pa_bryggan

Varför gör den det??

Medlem sedan dec. 2002299 inlägg
#5

Man såg inte riktigt länken:
homepage.te.hik.se/student/ms22ja/skold/bilder//Kenso/Kenso_pa_bryggan.jpgKenso_pa_bryggan

Härär den utan http://

Medlem sedan nov. 20017 144 inlägg
#6

Byt ut till

If Right(file.Name, 3) = "jpg" Then sFolders = sFolders & MyPath & ";"
Medlem sedan dec. 2002299 inlägg
#7

Tack så hemst mycket...
Hade aldrig löst det utan din hjälp---!

Mvh Martin

Medlem sedan nov. 20017 144 inlägg
#8

En Class?

Class getRndImg
	Private root, FSO, Mapp

	Public Property Let rootname(letRoot) 'As String
		root = letRoot
	End Property
	
	Private Property Get getrootname()
		getrootname = root
	End Property
	
	Private Sub startFSO()
		Dim FSO
		root =  Server.MapPath(getrootname)
		Set FSO  = Server.CreateObject("Scripting.FileSystemObject")
		Set Mapp = FSO.GetFolder(root)
	End Sub	
	
	Private Function GetSubFolders(pfolder) 'As String
		Dim sFolders, fldr, file, MyPath
		
		For Each fldr In pfolder.SubFolders
			sFolders = sFolders & GetSubFolders(fldr)
		Next
		
		For Each file In pfolder.Files
			MyPath = Right(file.path, len(file.path) - len(root))
			If Right(file.Name, 3) = "jpg" Then sFolders = sFolders & MyPath & ";"
		Next
		
		Set file = Nothing : Set fldr = Nothing
		GetSubFolders = sFolders
	End function
	
	Public Function image() 'As String
		Dim arrImages, rndNumber
		startFSO
		arrImages = Split(GetSubFolders(Mapp), ";")
		Set Mapp = nothing : Set FSO = nothing
			If IsArray(arrImages) Then
				randomize
				rndNumber = Int(Rnd * UBound(arrImages))
				image = arrImages(rndNumber)
			Else
				image = "ingen_bild.jpg"
			End if
	End Function
	
End Class

Dim i, img
Set i = New getRndImg
i.rootname = "bilder"
img = i.image
Set i = Nothing
Response.Write "<a href=""default.asp?page=2""><img src=""bilder/"& img &"""  width=""680"" height=""510""></a>"
Medlem sedan dec. 20011 860 inlägg
#9

Hur får man fram mappens namn i Jesper´s funktion?

Medlem sedan dec. 20011 860 inlägg
#10

Hallå? Nån som kan min föregående fråga?

Medlem sedan apr. 20031 660 inlägg
#11

HEJ!

En snabb titt säger mig att det finns en variabel som heter pfolder, prova den.
Annars är det väl endast att skriva ut de varibler man tror, och se vad de innehåller på olika ställen.

266 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)