Avatar billede martins Nybegynder
22. juni 2002 - 23:40 Der er 1 kommentar og
1 løsning

Pyha... stadig fotoalbum

Tjoe... nu har jeg brugt hele aftenen på at makse med det hersens fotoalbum. Jeg har nu selv løst problemet med paging og at der skulle vises 4 billeder i bredden. Problemet er nu, at hvis der ikke er så mange billeder som jeg angiver skal vises pr. side, så bliver dem der er bare gentaget. Nogen der har en løsning på dette?

Kode:
<html>
<title>Fotoserie</title>
</head>
<body>
<%
ImageDir = "temp"
ImageIn=server.mappath(ImageDir) &"\"
ImageOut=server.mappath(ImageDir&"thumb") &"\"
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFS.GetFolder(Server.MapPath(ImageDir))
Set objFiles = objFolder.Files

intPage = Request.Querystring("page")
If isNumeric(intPage) = False Or intPage < 1 Then
  intPage = 1
End If

intPageSize = 16 ' Antal filer på hver side
intCellSize = 4 ' Antal celler i tabellen
intRowSize = 4 ' Antal rækker
Cells = 0 ' Tæller
Rows = 0 ' Tæller

intImgCount = objFiles.Count
intPageCount = -Int(-(intImgCount/intPageSize))

Response.Write "<p><strong>" & intImgCount & " Billeder - "
Response.Write "viser side " & intPage & " af " & intPageCount & ":</strong></p>"
Response.Write("<table cellspacing='0' cellpadding='0' border='0'>")

do while rows < intRowSize
Rows = Rows + 1
Response.Write("<tr>")
do while cells < intCellSize
Cells = Cells + 1
For Each Image In objFiles
intFile = intFile +1
If (intFile >= ((intPage-1)*intPageSize)+1) And (intFile =< (intPageSize*intPage)) Then
  img = Image.Name
    Set Image = Server.CreateObject("AspImage.Image")
    Image.AutoSize = false
    Image.LoadImage(ImageIn& img )
    X = Image.MaxX
    Y = Image.MaxY

    If X > 100 Then
        ResizedX = 100
        ResizedY = (ResizedX * Y/X)
    End if

    Image.Resize ResizedX, ResizedY

    Image.ImageFormat = 1
    Image.JPEGQuality = 50

    Image.FileName = (ImageOut & img )
    Image.SaveImage
    Set Image = nothing

    Response.Write("<td><a href='"&imagedir&"/"&img&"'><img src='"&ImageDir&"thumb/" & img & "' border='0'></a></td>")   
End If
Next

Response.Write("</tr>")
Loop
Loop
Response.Write("</table>")

strScriptName = Request.Servervariables("ScriptName")
Response.Write "<p>Gå til side "
For i = 1 To intPageCount
Response.Write "<a href=" & strScriptName & "?page=" & i & ">" & i & "</a> "   
Next
Response.Write "</p>"
Set objFS = Nothing
%>
</body>
</html>
Avatar billede martins Nybegynder
23. juni 2002 - 02:58 #1
hhmm stadig ingen svar :P
Avatar billede eagleeye Praktikant
23. juni 2002 - 12:13 #2
Du har ikke nogen måde du stopper dine loops på hvis du løber "tør" fo filer.

Jeg ville gætte på du skal flytte dette ud foran begge do loops:

For Each Image In objFiles
intFile = intFile +1
If (intFile >= ((intPage-1)*intPageSize)+1) And (intFile =< (intPageSize*intPage)) Then

  'Her kommer dine do men formatering
  do while rows < intRowSize
    Rows = Rows + 1
    Response.Write("<tr>")
    do while cells < intCellSize
      Cells = Cells + 1
      img = Image.Name
      Set Image = Server.CreateObject("AspImage.Image")
      Image.AutoSize = false
      Image.LoadImage(ImageIn& img )
      X = Image.MaxX
  ...osv...

    Loop
  Loop
next



Denne køre alle filer igenne:
For Each Image In objFiles
og når der ikke er flere filer og den stadig ikke er færdig med de første do loops så køre den alle fileren igennem igen og så vil du få den gentaget. Den måde jeg skriver på løber den kun filerne igennem en gang.
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