Avatar billede superraider Nybegynder
28. juni 2004 - 17:03 Der er 9 kommentarer og
1 løsning

Kode der kan fortælle om, hvilke filer der er i en mappe

Hej,
jeg skal bruge et stump kode som kan fortælle mig hvor mange filer der er i en mappe, og liste filnavnene på en eller anden måde. evt. skrive filnavne over i en database.

nogen der har noget som minder lidt om det jeg snakker om, så skrive hvor og hvordan jeg for fat på det.
Avatar billede superraider Nybegynder
28. juni 2004 - 19:00 #1
har vist fundet det, men giver pointene til den der gider at skrive små forklaringer til de forskellige ting, så jeg kan forstå hvad der sker.

<%
dim image_directory, image_height, image_width, Images_pr_Page, Images_Horizontal
image_directory = "gallery"
image_height = "41"
image_width = "41"
Images_pr_Page = "12"
Images_Horizontal = "4"

dim count_image, image, Image_Array
Set directory=server.createobject("scripting.filesystemobject")
Set allfiles=directory.getfolder(server.mappath(image_directory))

For each image in allfiles.files
  Image_Array = Image_Array + image.Name & ","

  count_image = count_image +1
Next

dim Current_Page, Total_Pages, Total_Images, Page_Name

Page_Name = request.servervariables("script_name")
Total_Images = count_image

Current_Page  = request.querystring("page")
If Current_Page = "" or Current_Page = "0" then
    Current_Page = "1"
end if

Total_Pages = (Total_Images/Images_pr_Page)

if Total_Pages > int(Total_Pages) then
    Total_Pages = int(Total_Pages) + 1
end if

Image_Array = split(Image_Array,",")

dim First_Image, Last_Image
First_Image = ((Current_Page-1)*(Images_pr_Page))+1
If First_Image =  "0" then
    First_Image = "1"
end if
Last_Image = (Total_Images-First_Image)

if cint(Last_Image) > cint(Images_pr_Page) then
    Last_Image = round(First_Image-1) + round(Images_pr_Page)
else
    Last_Image = (First_Image + Last_Image)
End if

response.write "<table style=""width:100%;"">" & vbCrLf

    dim Count_Image_Prints, td_width
    Count_Image_Prints = 0

    td_width = int(100 / Images_Horizontal)

    dim I
    For I = (First_Image-1) to (Last_Image-1)
        Count_Image_Prints = Count_Image_Prints + 1

        If int(Count_Image_Prints) = int("1") then
            response.write "<tr>" & vbCrLf
        end if

        response.write "<td style=""width:"& td_width &"%;text-align:center;"">" &_
            "<a href="""& image_directory &"/"& Image_Array(I) &""" target=""_blank"">" &_
                "<img src="""& image_directory &"/"& Image_Array(I) &""" border=""0"" style=""width:"& image_width &"px;;height:"& image_height &"px;"" />" &_
            "</a>" &_
        "</td>" & vbCrLf

        If int(Count_Image_Prints) = int(Images_Horizontal) then
            response.write "</tr>" & vbCrLf
            Count_Image_Prints = 0
        end if
    Next

    response.write "</tr>" & vbCrLf &_
    "<tr>" & vbCrLf &_
        "<td colspan="""& Images_Horizontal &""" style=""width:100%;text-align:center;"">" & vbCrLf

        For I = 1 to Total_Pages
            If NOT Cint(Current_Page) = Cint(I) then
                response.write " <a href="""& Page_Name &"?page="& I &""">" &_
                    I &_
                "</a> "
            else
                response.write " ["& I &"] "
            end if
        Next

        response.write "</td>" & vbCrLf &_
    "</tr>" & vbCrLf &_
"</table>" & vbCrLf
%>
Avatar billede mm12010 Nybegynder
28. juni 2004 - 19:11 #2
Avatar billede superraider Nybegynder
28. juni 2004 - 19:16 #3
det er fordi jeg skal bruge det til at lave et fotoalbum, så jeg vil bruge det kode jeg har skreve ovenover, men mangler bare lige forklaring af det.
Avatar billede ellebaek Nybegynder
28. juni 2004 - 22:02 #4
<%
dim image_directory, image_height, image_width, Images_pr_Page, Images_Horizontal
image_directory = "gallery"
image_height = "41"
image_width = "41"
Images_pr_Page = "12"
Images_Horizontal = "4"
'*** Definere de forskellige variable...

dim count_image, image, Image_Array
Set directory=server.createobject("scripting.filesystemobject")
Set allfiles=directory.getfolder(server.mappath(image_directory))
'*** Definere objekter

For each image in allfiles.files
  Image_Array = Image_Array + image.Name & ","

  count_image = count_image +1
Next
'*** Tæller antallet af filer, samt ligger alle deres navne ind i en kommasepereret streng..

dim Current_Page, Total_Pages, Total_Images, Page_Name

Page_Name = request.servervariables("script_name")
Total_Images = count_image
'*** Sætter forskellige variable.. Page_name er navnet på siden, Total_Images er antallet af billeder

Current_Page  = request.querystring("page")
If Current_Page = "" or Current_Page = "0" then
    Current_Page = "1"
end if
'*** Sikre at hvis Current_Page der er den valgte side ikke eksistere, så sættes den til side 1..

Total_Pages = (Total_Images/Images_pr_Page)
'*** Beregner antallet af sider

if Total_Pages > int(Total_Pages) then
    Total_Pages = int(Total_Pages) + 1
end if
'*** Sikre at der er plads til alle billederne

Image_Array = split(Image_Array,",")
'*** Splitter strengen til et array.

dim First_Image, Last_Image
First_Image = ((Current_Page-1)*(Images_pr_Page))+1
If First_Image =  "0" then
    First_Image = "1"
end if
Last_Image = (Total_Images-First_Image)
'*** Finder første og sidste billedenr. i arrayet ud fra den valgte side, samt antallet af billeder pr. side

if cint(Last_Image) > cint(Images_pr_Page) then
    Last_Image = round(First_Image-1) + round(Images_pr_Page)
else
    Last_Image = (First_Image + Last_Image)
End if
'*** Sikre at sidste billede findes...

response.write "<table style=""width:100%;"">" & vbCrLf

    dim Count_Image_Prints, td_width
    Count_Image_Prints = 0

    td_width = int(100 / Images_Horizontal)
'*** Opskriver tabellen.
    dim I
    For I = (First_Image-1) to (Last_Image-1)
        Count_Image_Prints = Count_Image_Prints + 1

        If int(Count_Image_Prints) = int("1") then
            response.write "<tr>" & vbCrLf
        end if

        response.write "<td style=""width:"& td_width &"%;text-align:center;"">" &_
            "<a href="""& image_directory &"/"& Image_Array(I) &" target=""_blank"">" &_
                "<img src="""& image_directory &"/"& Image_Array(I) &""" border=""0"" style=""width:"& image_width &"px;;height:"& image_height &"px;"" />" &_
            "</a>" &_
        "</td>" & vbCrLf

        If int(Count_Image_Prints) = int(Images_Horizontal) then
            response.write "</tr>" & vbCrLf
            Count_Image_Prints = 0
        end if
    Next
'*** For-løkke der skriver billederne ud på siden..

    response.write "</tr>" & vbCrLf &_
    "<tr>" & vbCrLf &_
        "<td colspan="""& Images_Horizontal &""" style=""width:100%;text-align:center;"">" & vbCrLf

        For I = 1 to Total_Pages
            If NOT Cint(Current_Page) = Cint(I) then
                response.write " <a href="""& Page_Name &"?page="& I &""">" &_
                    I &_
                "</a> "
            else
                response.write " ["& I &"] "
            end if
        Next
'*** For-løkke der skriver antallet af sider, samt markere den aktuelle side..

        response.write "</td>" & vbCrLf &_
    "</tr>" & vbCrLf &_
"</table>" & vbCrLf
%>
'*** Afslutter scriptet..

Håber det var forklaringer nok ;-)
Avatar billede superraider Nybegynder
28. juni 2004 - 22:19 #5
Ja det ser fin ud.
men hvad er det betyder når man gør int(til et eller andet)
Page_Name = request.servervariables("script_name") ????
Set directory=server.createobject("scripting.filesystemobject") ???
Set allfiles=directory.getfolder(server.mappath(image_directory)) ???
og så lige de tre ovenstående linjer, hvad betyder de-
Avatar billede ellebaek Nybegynder
28. juni 2004 - 22:22 #6
int(til et eller andet)
gør at du konvertere en variabel til integer... altså et tal uden decimaler..

Page_Name = request.servervariables("script_name")
Finder navnet på den side du arbejder på...

Set directory=server.createobject("scripting.filesystemobject")
Definere det objekt der benyttes til at finde de forskellige filer..

Set allfiles=directory.getfolder(server.mappath(image_directory))
benytter det før definerede objekt til at vælge en specifik mappe. Denne mappe er defineret i den tidligere variabel image_directory.
Avatar billede superraider Nybegynder
28. juni 2004 - 22:25 #7
hvis jeg gemmer denne asp fil i rodden, vil den så tage en mappe der hedder gallery, eller hvor definere jeg vilken mappe den tage billederne fra
Avatar billede ellebaek Nybegynder
28. juni 2004 - 22:41 #8
som det er nu vil den tage billederne fra mappen gallery...

Hvis du fx. har en struktur der hedder..

mappe
  - asp
  - billeder

og du vil hente billederne fra mappen billeder fra mappen asp, så skal du rette denne linie:
image_directory = "gallery"
til:
image_directory = "../billeder"

../ går et hak op i mappehirakiet..!
Avatar billede superraider Nybegynder
28. juni 2004 - 22:50 #9
ja, ok, det var det som jeg lige skulle vide.
tak for hjælpen
Avatar billede ellebaek Nybegynder
29. juni 2004 - 12:33 #10
Anytime.

Takker for points..
..Ellebæk!
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