Avatar billede andersasp Nybegynder
26. november 2004 - 18:53 Der er 3 kommentarer og
1 løsning

Bestemt fil må kun forekomme én gang!

Hej!

Jeg har et script som kører igennem en masse bibloteker og så gemmer alle filer som ligger i dem! Problemet er dog at hvis man oploader et nyt biblotek og kører filen igen, skriver den 2x de filer som den allerede har inde i databasen.

Hvordan kan jeg gøre det sådan at filerne ikke bliver gemt 2 gange???

min tabel som jeg gemmer til er her:

tabel:        singlepictures
billede navn: pic

<%
        Set Conn = Server.CreateObject("ADODB.Connection")
        Conn.Open MM_festbilleder_STRING

Set fso = CreateObject("Scripting.FileSystemObject")

function lookinfolder (foldernavn)
  Set objFolder = fso.getFolder( foldernavn )
  'Response.Write objFolder.path & "<br>"
 
  call saveFiles (objFolder.Path)
 
  For each Folder in objFolder.SubFolders
    call lookinfolder (Folder.path)
  next
 
  Set objFolder = Nothing
end function

function saveFiles (foldernavn)
  Set objFolder = fso.getFolder( foldernavn )
  Set objFiles = objFolder.Files
  catID = ""
  for each file in objFiles
    if InStr(1,"gif,jpg,jpeg,bmp", LCase(fso.GetExtensionName(file.name))) > 0 then
      if catID = "" then catID = findCatID(objFolder.name)
       
        replacepath = LCASE(Server.MapPath("/"))
        folderdpath = LCASE(objFolder)
        folderdpath2 = replace(folderdpath,replacepath,"")
        folderdpath3 = replace(folderdpath2,"\","/")

      SQL = "INSERT INTO singlepictures (categoryid, pic) VALUES (" & catID & ", '" & folderdpath3 & "/" & file.name & "')"
      Conn.Execute (SQL)

    end if
  next
  Set objFolder = Nothing
  Set objFiles = Nothing
end function

function findCatID (foldernavn)
Set rs = Server.CreateObject("ADODB.RecordSet")
SQL = "SELECT ID, category FROM categories WHERE category = '" & foldernavn & "'"
rs.Open SQL, Conn, 1, 3
if rs.EOF then
  rs.AddNew
  rs("category") = foldernavn
  rs.Update
  findCatID = rs("id")
else
  findCatID = rs("id")
end if
rs.Close
end function

sti = "."
strPhysicalPath = Server.MapPath(sti)

lookinfolder (strPhysicalPath)

Response.Write "All files has been stored"

Conn.Close
Set Conn = Nothing
Set fso = Nothing
%>
Avatar billede ellebaek Nybegynder
26. november 2004 - 22:11 #1
<%
        Set Conn = Server.CreateObject("ADODB.Connection")
        Conn.Open MM_festbilleder_STRING
set rs = server.createObject("adodb.recordset")

Set fso = CreateObject("Scripting.FileSystemObject")

function checkFile(file, folderpath)
sql = "SELECT * from singlepictures where pic = '" & folderdpath & "/" & file & "'"
rs.open sql, MM_festbilleder_STRING
if rs.eof then
rs.close
checkFile = false
else
rs.close
checkFile = true
end if
end function

function lookinfolder (foldernavn)
  Set objFolder = fso.getFolder( foldernavn )
  'Response.Write objFolder.path & "<br>"

  call saveFiles (objFolder.Path)

  For each Folder in objFolder.SubFolders
    call lookinfolder (Folder.path)
  next

  Set objFolder = Nothing
end function

function saveFiles (foldernavn)
  Set objFolder = fso.getFolder( foldernavn )
  Set objFiles = objFolder.Files
  catID = ""
  for each file in objFiles
    if InStr(1,"gif,jpg,jpeg,bmp", LCase(fso.GetExtensionName(file.name))) > 0 then
      if catID = "" then catID = findCatID(objFolder.name)
     
        replacepath = LCASE(Server.MapPath("/"))
        folderdpath = LCASE(objFolder)
        folderdpath2 = replace(folderdpath,replacepath,"")
        folderdpath3 = replace(folderdpath2,"\","/")
if checkFile(file.name, folderpath3) = false Tgen
      SQL = "INSERT INTO singlepictures (categoryid, pic) VALUES (" & catID & ", '" & folderdpath3 & "/" & file.name & "')"
      Conn.Execute (SQL)
end if

    end if
  next
  Set objFolder = Nothing
  Set objFiles = Nothing
end function

function findCatID (foldernavn)
Set rs = Server.CreateObject("ADODB.RecordSet")
SQL = "SELECT ID, category FROM categories WHERE category = '" & foldernavn & "'"
rs.Open SQL, Conn, 1, 3
if rs.EOF then
  rs.AddNew
  rs("category") = foldernavn
  rs.Update
  findCatID = rs("id")
else
  findCatID = rs("id")
end if
rs.Close
end function

sti = "."
strPhysicalPath = Server.MapPath(sti)

lookinfolder (strPhysicalPath)

Response.Write "All files has been stored"

Conn.Close
Set Conn = Nothing
Set fso = Nothing
%>


Jeg vil tro noget i den her stil kan klare det for dig...
Men prøv ad, og så skriv hvis den kommer med fejl..
Avatar billede andersasp Nybegynder
03. maj 2005 - 11:47 #2
Ok tak, lidt længe siden, sorry. smider du ikke lige et svar!
Avatar billede ellebaek Nybegynder
03. maj 2005 - 12:26 #3
Jo... der er et svar her..

Og helt i orden :-)

//>Jens!
Avatar billede andersasp Nybegynder
23. maj 2005 - 12:20 #4
Undskyld det tog så lang tid
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