Avatar billede power_t Nybegynder
08. september 2005 - 10:00 Der er 7 kommentarer

Sortering i array

Til et billedarkiv på min side, bruger jeg nedenstående kode. Alle mapper i rodmappen vises i en dropdown.
Jeg vil gerne sortere mapperne efter navn - asc el. desc, men kan ikke lige greje det.

Nogle der har et bud?


<%
ShowSub = request("ShowSub")
ShowPic = request("ShowPic")
strPathInfo = Request.ServerVariables("PATH_INFO")
strPhysicalPath = Server.MapPath(strPathInfo)

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(strPhysicalPath)
Set objFolder = objFile.ParentFolder
Set objFolderContents = objFolder.Files
For each Folder in objFolder.SubFolders
If Left(Folder.Name,1)<>"_" Then
Response.write "<option "
If ShowSub=Folder.Name Then
Response.Write "selected "
End if
Response.Write"value='" & CurFile & "?ShowSub="
Response.Write(Replace(Folder.Name, " ", "%20"))
response.write "'>"
Response.Write(Folder.Name & "</option>")
If ShowSub <= " " Then
ShowSub = Folder.Name
End if
End if
Next
Set objFSO = Nothing
%>
Avatar billede cpufan Juniormester
08. september 2005 - 10:29 #1
måske ikke verdens kønneste: (er iøvrigt ikke testet for fejl)

<%
ShowSub = request("ShowSub")
ShowPic = request("ShowPic")
strPathInfo = Request.ServerVariables("PATH_INFO")
strPhysicalPath = Server.MapPath(strPathInfo)

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(strPhysicalPath)
Set objFolder = objFile.ParentFolder
Set objFolderContents = objFolder.Files
object-counter = 0
For each Folder in objFolder.SubFolders
If Left(Folder.Name,1)<>"_" Then
object-counter = object-counter + 1
End if
Next
dim objectarray(object-counter)

arrtext = ""
arrcount = 1
For each Folder in objFolder.SubFolders
If Left(Folder.Name,1)<>"_" Then
arrtext = arrtext & "<option "
If ShowSub=Folder.Name Then
arrtext = arrtext &  "selected "
End if
arrtext = arrtext & "value='" & CurFile & "?ShowSub="
arrtext = arrtext & (Replace(Folder.Name, " ", "%20"))
arrtext = arrtext &  "'>"
arrtext = arrtext & (Folder.Name & "</option>")
If ShowSub <= " " Then
ShowSub = Folder.Name
End if
End if
objectarray(arrcount) = arrtext
arrcount = arrcount + 1
Next
Set objFSO = Nothing
dim ordering
ordering = "asc" ' her skal det nok være en request("ordering") som enten kan være asc eller desc

if ordering = "asc" then
for a = 1 to Ubound(objectarray)
response.write objectarray(a) &"<br>"
next
else
while object-counter > 0
response.write objectarray(object-counter) &"<br>"
object-counter = object-counter - 1
wend

%>
Avatar billede cpufan Juniormester
08. september 2005 - 10:29 #2
ja der manglede selvf. en end if til sidst:

if ordering = "asc" then
for a = 1 to Ubound(objectarray)
response.write objectarray(a) &"<br>"
next
else
while object-counter > 0
response.write objectarray(object-counter) &"<br>"
object-counter = object-counter - 1
wend
end if
%>
Avatar billede cpufan Juniormester
08. september 2005 - 10:31 #3
og en anden fejl med arrtext, så jeg poster lige det hele igen:


<%
ShowSub = request("ShowSub")
ShowPic = request("ShowPic")
strPathInfo = Request.ServerVariables("PATH_INFO")
strPhysicalPath = Server.MapPath(strPathInfo)

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(strPhysicalPath)
Set objFolder = objFile.ParentFolder
Set objFolderContents = objFolder.Files
object-counter = 0
For each Folder in objFolder.SubFolders
If Left(Folder.Name,1)<>"_" Then
object-counter = object-counter + 1
End if
Next
dim objectarray(object-counter)


arrcount = 1
For each Folder in objFolder.SubFolders
arrtext = ""
If Left(Folder.Name,1)<>"_" Then
arrtext = arrtext & "<option "
If ShowSub=Folder.Name Then
arrtext = arrtext &  "selected "
End if
arrtext = arrtext & "value='" & CurFile & "?ShowSub="
arrtext = arrtext & (Replace(Folder.Name, " ", "%20"))
arrtext = arrtext &  "'>"
arrtext = arrtext & (Folder.Name & "</option>")
If ShowSub <= " " Then
ShowSub = Folder.Name
End if
End if
objectarray(arrcount) = arrtext
arrcount = arrcount + 1
Next
Set objFSO = Nothing
dim ordering
ordering = "asc" ' her skal det nok være en request("ordering") som enten kan være asc eller desc

if ordering = "asc" then
for a = 1 to Ubound(objectarray)
response.write objectarray(a) &"<br>"
next
else
while object-counter > 0
response.write objectarray(object-counter) &"<br>"
object-counter = object-counter - 1
wend
end if
%>
Avatar billede power_t Nybegynder
08. september 2005 - 11:09 #4
Jeg er sq ikke så hård i det der. Hvad hvis jeg vil have den desc istedet?
Avatar billede cpufan Juniormester
08. september 2005 - 11:24 #5
det er denne linie

ordering = "asc" ' her skal det nok være en request("ordering") som enten kan være asc eller desc

som kan lyde
ordering = request("ordering") ' hvis du sender en parameter med der hedder ordering=asc , kommer de asc, ellers kommer de desc.
den kan du så enten sende fra en selectboks eller hvad du nu syntes
Avatar billede power_t Nybegynder
08. september 2005 - 13:04 #6
Men du har kun lavet eksemplet, når ordering="asc"...
Avatar billede cpufan Juniormester
08. september 2005 - 14:08 #7
nej, den er også som desc det kommer i:

if ordering = "asc" then 'her er det asc
for a = 1 to Ubound(objectarray)
response.write objectarray(a) &"<br>"
next
else ' her er det desc
while object-counter > 0
response.write objectarray(object-counter) &"<br>"
object-counter = object-counter - 1
wend
end if
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