Avatar billede 4b4 Nybegynder
18. december 2007 - 11:28 Der er 19 kommentarer og
1 løsning

Folder system - alfabetisk rækkefølge

Er der en venlig ASP enabled sjæl som kan forklare og evt. lave så mit gamle nedenstående script lister alting efter alfabetisk rækkefølge? (i får lige hele .asp filen..)

<html>
<head>
<title>BERGSORENSEN &#8482; | stuff</title>
</head>
<body>
<style type="text/css">
<!--
body, td
{
    background-color: #FFFFFF;
    margin-left: 80px;
    margin-top: 80px;
    margin-right: 0px;
    margin-bottom: 0px;

    font-family: Arial, Helvetica, sans-serif;
    font-size: 11px;
    color: #AC7848;
    font-weight: strong;
    text-decoration: none;

}

td
{
    font-family: Arial, Helvetica, sans-serif;
    font-size: 11px;
    color: #AC7848;
    font-weight: strong;
    text-decoration: none;
}

a:visited
{
    font-family: Arial, Helvetica, sans-serif;
    font-size: 11px;
    color: #AC7848;
    font-weight: strong;
    text-decoration: none;
}



a:link
{
    font-family: Arial, Helvetica, sans-serif;
    font-size: 11px;
    color: #AC7848;
    font-weight: strong;
    text-decoration: none;
}

a:hover
{
    font-family: Arial, Helvetica, sans-serif;
    font-size: 11px;
    color: #3C230F;
    font-weight: strong;
    text-decoration: none;
}

-->
</style>
<img src="../stuff_images/logo.gif" border="0"><br><br><br>
<%
path = replace(request.querystring("folder"),"../","")
if path = "" then
path = "./"
end if
set fs=Server.CreateObject("Scripting.FileSystemObject")
if request.querystring("folder") <> "" then
    parent = split(request.querystring("folder"),"/")
    for a=0 to ubound(parent)
    parentcount=parentcount+1
    next
    Nparentcount=0
    Nparent = split(request.querystring("folder"),"/")
    for b=0 to ubound(Nparent)
    Nparentcount=Nparentcount+1
        if NOT Nparentcount=parentcount then
        parentlink = parentlink & "/" & Nparent(b)
        end if
    next
    if left(parentlink,1) = "/" then
    parentlink = right(parentlink,len(parentlink)-1)
        end if
%>
<strong><a href="<%=request.servervariables("script_name")%>?folder=<%=parentlink%>">
< Tilbage
</a></strong>
<br><br>
<%
end if
set f=fs.GetFolder(server.mappath(path))
for each folder in f.subfolders
foldername = folder.name
foldercount=foldercount+1
    if request.querystring("folder") = "" then
%>
<strong><img src="http://www.bergsorensen.dk/billeder/tmp/folder.gif"><a href="<%=request.servervariables("script_name")%>?folder=<%=request.querystring("folder") & foldername%>">
<%=foldername%>
</a></strong>
<br><img src="http://www.bergsorensen.dk/billeder/tmp/spacer.gif" width="4" heigth="4"><br>
<%
    else
%>
<strong><img src="http://www.bergsorensen.dk/billeder/tmp/folder.gif"><a href="<%=request.servervariables("script_name")%>?folder=<%=request.querystring("folder") & "/" & foldername%>">
<%=foldername%>
</a></strong>
<br><img src="http://www.bergsorensen.dk/billeder/tmp/spacer.gif" width="4" heigth="4"><br>
<%
    end if
next
if foldercount <> "" then
%>
<!- break kan indsættes her -!>
<%else%>
<!- break kan indsættes her -!>
<%
end if
for each file in f.files
filename = file.name
filecount=filecount+1
    if request.querystring("folder") = "" then
        if NOT request.servervariables("path_translated") = server.mappath(path & filename) then
%>
<a href="<%=path & filename%>">
<%=filename%>
</a>
<br>
<%
    end if
    else
%>
<a href="<%=path & "/" & filename%>">
<%=filename%>
</a>
<br>
<%
    end if
next
set f=nothing
set fs=nothing
if filecount <> "" then
%>

<%else%>
<br>Der er ingen filer i denne mappe!<br>
<%end if%>
<br><br>
Folder: <i>(<%=path%>)</i>
</body>
</html>
Avatar billede 4b4 Nybegynder
18. december 2007 - 11:29 #1
kan ses i "funktion" på www.bergsorensen.dk/stuff
Avatar billede 4b4 Nybegynder
18. december 2007 - 11:36 #2
Jeg gir' en runde hvis en kan fixe ovenstående :P~
Avatar billede kinderaeg Nybegynder
18. december 2007 - 12:42 #3
Du kan gøre det ved at smide dine filnavne over i et recordset i stedet for at skrive dem ud med det samme. Når du har alle filnavnene, sorterer du recordsettet og udskriver det.
Avatar billede 4b4 Nybegynder
18. december 2007 - 14:20 #4
altså en slags buggle sort? Er det evt. noget du kan lave? (det er llaaang tid siden jeg har lavet ovenstående)
Avatar billede kinderaeg Nybegynder
18. december 2007 - 15:59 #5
Jeg har engang lavet noget tilsvarende, vha. nedenstående. Så har du mulighed for at sortere på forskellige parametre. Og så er det jo bare at løbe recordsettet igennem og udskrive, som du ellers ville ha' gjort.

set rsf = Server.CreateObject("ADODB.Recordset")
With rsf.Fields
  .Append "Name", adVarChar, 200
  .Append "Type", adVarChar, 200
  .Append "DateCreated", adDate
  .Append "DateLastModified", adDate
End With
rsf.Open()
For Each fl in sf
  rsf.AddNew
  rsf("Name") = fl.Name
  rsf("Type") = fl.Type
  rsf("DateCreated") = fl.DateCreated
  rsf("DateLastModified") = fl.DateLastModified
  rsf.Update
Next
rsf.Sort = "DateLastModified DESC"
Avatar billede 4b4 Nybegynder
18. december 2007 - 17:15 #6
Tak for dit svar kinderaeg.

Desværre er det en smule vollapyk og jeg har ingen anelse hvordan jeg skal inkorporere det i min kode ;&
Avatar billede 4b4 Nybegynder
18. december 2007 - 17:18 #7
Altså.. de forskellige parametre ind i et sæt og derefter sorte dem.. (prøver at huske tilbage på de gode gamle programmør dage...)
Avatar billede kinderaeg Nybegynder
19. december 2007 - 08:47 #8
Netop, først oprettes et recordset, som vi laver fire kolonner på (navn, type, oprettelsesdato og modifiseringsdato). Derefter fylder vi filens værdier i de enkelte felter og til sidst sorterer vi recordsettet, så vi har den ønskede rækkefølge ;)
Avatar billede 4b4 Nybegynder
19. december 2007 - 14:01 #9
hrmm.. det lyder meget simpelt - men hvordan det skal kodes - ja, det er en anden ting. Det er vel ikke noget der vil tage dig lang tid ? :)
Avatar billede kinderaeg Nybegynder
19. december 2007 - 15:51 #10
Skal ikke kunne sige hvor lang tid det vil tage dig, det kommer jo lidt an på, hvor god du er til at programmere, men du kan jo lave noget ala nedenstående for filnavnene, og noget tilsvarende for folderne:

for each file in f.files
  filename = file.name
  filecount=filecount+1
  rsf.AddNew
  rsf("Name") = filename
  rsf.Update
next
rsf.Sort = "Name ASC"
while not rsf.eof
  if request.querystring("folder") = "" then
    if NOT request.servervariables("path_translated") = server.mappath(path & filename) then
%>
<a href="<%=path & rsf("Name")%>">
<%=filename%>
</a>
<br>
<%
    end if
  else
%>
<a href="<%=path & "/" & rsf("Name")%>">
<%=filename%>
</a>
<br>
<%
  end if
wend
Avatar billede 4b4 Nybegynder
19. december 2007 - 16:17 #11
Programmerer slet ikke mere hvorfor ovenstående er noget fjernt for mig. Havde håbet på en simpel "hot fix" løsning :/

Smid et svar, så deler jeg point ud
Avatar billede kinderaeg Nybegynder
20. december 2007 - 09:08 #12
Prøv med det her, det er ikke noget jeg har testet, men det skulle gerne være ret tæt på, så kan du selv lige rette det sidste til:

<html>
<head>
<title>BERGSORENSEN &#8482; | stuff</title>
</head>
<body>
<style type="text/css">
<!--
body, td
{
    background-color: #FFFFFF;
    margin-left: 80px;
    margin-top: 80px;
    margin-right: 0px;
    margin-bottom: 0px;

    font-family: Arial, Helvetica, sans-serif;
    font-size: 11px;
    color: #AC7848;
    font-weight: strong;
    text-decoration: none;

}

td
{
    font-family: Arial, Helvetica, sans-serif;
    font-size: 11px;
    color: #AC7848;
    font-weight: strong;
    text-decoration: none;
}

a:visited
{
    font-family: Arial, Helvetica, sans-serif;
    font-size: 11px;
    color: #AC7848;
    font-weight: strong;
    text-decoration: none;
}



a:link
{
    font-family: Arial, Helvetica, sans-serif;
    font-size: 11px;
    color: #AC7848;
    font-weight: strong;
    text-decoration: none;
}

a:hover
{
    font-family: Arial, Helvetica, sans-serif;
    font-size: 11px;
    color: #3C230F;
    font-weight: strong;
    text-decoration: none;
}

-->
</style>
<img src="../stuff_images/logo.gif" border="0"><br><br><br>
<%
path = replace(request.querystring("folder"),"../","")
if path = "" then
path = "./"
end if
set rsf = Server.CreateObject("ADODB.Recordset")
set fs=Server.CreateObject("Scripting.FileSystemObject")
if request.querystring("folder") <> "" then
    parent = split(request.querystring("folder"),"/")
    for a=0 to ubound(parent)
    parentcount=parentcount+1
    next
    Nparentcount=0
    Nparent = split(request.querystring("folder"),"/")
    for b=0 to ubound(Nparent)
    Nparentcount=Nparentcount+1
        if NOT Nparentcount=parentcount then
        parentlink = parentlink & "/" & Nparent(b)
        end if
    next
    if left(parentlink,1) = "/" then
    parentlink = right(parentlink,len(parentlink)-1)
        end if
%>
<strong><a href="<%=request.servervariables("script_name")%>?folder=<%=parentlink%>">
< Tilbage
</a></strong>
<br><br>
<%
end if
With rsf.Fields
  .Append "Name", adVarChar, 200
End With
rsf.Open()
set f=fs.GetFolder(server.mappath(path))
for each folder in f.subfolders
foldername = folder.name
foldercount=foldercount+1
filename = file.name
filecount=filecount+1
rsf.AddNew
rsf("Name") = foldername
rsf.Update
next
rsf.Sort = "Name ASC"
while not rsf.eof
    if request.querystring("folder") = "" then
%>
<strong><img src="http://www.bergsorensen.dk/billeder/tmp/folder.gif"><a href="<%=request.servervariables("script_name")%>?folder=<%=request.querystring("folder") & rsf("Name")%>">
<%=rsf("Name")%>
</a></strong>
<br><img src="http://www.bergsorensen.dk/billeder/tmp/spacer.gif" width="4" heigth="4"><br>
<%
    else
%>
<strong><img src="http://www.bergsorensen.dk/billeder/tmp/folder.gif"><a href="<%=request.servervariables("script_name")%>?folder=<%=request.querystring("folder") & "/" & rsf("Name")%>">
<%=rsf("Name")%>
</a></strong>
<br><img src="http://www.bergsorensen.dk/billeder/tmp/spacer.gif" width="4" heigth="4"><br>
<%
    end if
wend
if foldercount <> "" then
%>
<!- break kan indsættes her -!>
<%else%>
<!- break kan indsættes her -!>
<%
end if
rsf.Close()
rsf.Open()
for each file in f.files
filename = file.name
filecount=filecount+1
rsf.AddNew
rsf("Name") = filename
rsf.Update
next
rsf.Sort = "Name ASC"
while not rsf.eof
    if request.querystring("folder") = "" then
        if NOT request.servervariables("path_translated") = server.mappath(path & rsf("Name")) then
%>
<a href="<%=path & rsf("Name")%>">
<%=rsf("Name")%>
</a>
<br>
<%
    end if
    else
%>
<a href="<%=path & "/" & rsf("Name")%>">
<%=rsf("Name")%>
</a>
<br>
<%
    end if
wend
rsf.Close()
set rsf = nothing
set f=nothing
set fs=nothing
if filecount <> "" then
%>

<%else%>
<br>Der er ingen filer i denne mappe!<br>
<%end if%>
<br><br>
Folder: <i>(<%=path%>)</i>
</body>
</html>
Avatar billede 4b4 Nybegynder
20. december 2007 - 09:43 #13
http://www.bergsorensen.dk/stuff/index2.asp

# Error Type:
Sun ONE ASP VBScript compilation (0x800A03F6)
Expected 'End'
/stuff/index2.asp, line 95, column 9

# Browser Type:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11

# Page:
GET /stuff/index2.asp
Avatar billede kinderaeg Nybegynder
20. december 2007 - 11:33 #14
Så vidt jeg kan se, så er linie 95 denne linie:

With rsf.Fields

Jeg ved ikke om det er fordi sun one ikke accepterer with, men prøv evt., i stedet for:

With rsf.Fields
  .Append "Name", adVarChar, 200
End With

blot at skrive:

rsf.Append "Name", adVarChar, 200
Avatar billede 4b4 Nybegynder
20. december 2007 - 12:20 #15
Den havde jeg faktisk allrede forsøgt :
Error Type:
Sun ONE ASP VBScript runtime (0x800A01B6)
Object does not support this property or method: 'Append'
/stuff/index2.asp, line 95
Avatar billede kinderaeg Nybegynder
20. december 2007 - 13:10 #16
Ok, det lader til at Sun ONE ikke tillader enkeltstående recordsets, så du må nok bruge et array i stedet. Bare lav et array of strings og fyld data deri, i stedet for recordsettet, og så kan du bruge nedenstående til at sortere arrayet:

function fnSort(aSort, intAsc)
' ascending sorted = 1
' descending sorting = any other chara
  Dim intTempStore
  Dim i, j
  For i = 0 To UBound(aSort) - 1
    For j = i To UBound(aSort)
      'Sort Ascending
      if intAsc = 1 Then
        if aSort(i) > aSort(j) Then
          intTempStore = aSort(i)
          aSort(i) = aSort(j)
          aSort(j) = intTempStore
        End if 'i > j
        'Sort Descending
      Else
        if aSort(i) < aSort(j) Then
          intTempStore = aSort(i)
          aSort(i) = aSort(j)
          aSort(j) = intTempStore
        End if 'i < j
      End if 'intAsc = 1
    Next 'j
  Next 'i
  fnSort = aSort
End function 'fnSort
Avatar billede 4b4 Nybegynder
20. december 2007 - 16:09 #17
Se nu snakker du sort igen.. Er lidt clueless - men vil ikke tage mere af din tid. Har givet dig pointene, så må jeg se om kan få sat mig lidt mere ind i asp på et tidspunkt :/
Avatar billede kinderaeg Nybegynder
20. december 2007 - 16:20 #18
Ja jeg må nok desværre tilstå at jeg også er lidt rusten i asp, det er efterhånden ved at være meget længe siden jeg sidst har programmeret noget deri. Men med ovenstående funktion til at sortere et array, skulle du fx kunne gøre noget lignende nedenstående ;)

Dim aUnSort(3), aSorted
aUnSort(0) = 4
aUnSort(1) = 2
aUnSort(2) = 6
aUnSort(3) = 20

aSorted = fnSort(aUnSort, 1)

Herefter er det nye array aSorted sorteret stigende.
Avatar billede 4b4 Nybegynder
22. december 2007 - 10:02 #19
Hedder det forresten ikke:

rsf.Fields.Append "Name", adVarChar, 200
?

men stadig fejl ;(
Avatar billede kinderaeg Nybegynder
23. december 2007 - 14:32 #20
Jo, det gør det, jeg havde nok lidt for travlt, men som du selv påpeger, er forskellen den samme, Sun ONE tillader ikke enkeltstående recordsets, desværre
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