Avatar billede bobbedude Nybegynder
06. december 2001 - 16:41 Der er 37 kommentarer og
1 løsning

Dir til db

Jeg har et dir der hedder IMAGES i dette har jeg en del mapper med store billeder i.

Hvordan kan man gøre sådan at jeg bare skal uploade en mappe med billeder i til IMAGES og så kører en update.asp fil.
Herefter laver den automatisk en kategori med det navn mappen har og sætter alle billed navnene ind i databasen ??
Avatar billede bobbedude Nybegynder
06. december 2001 - 16:42 #1
Dog kun filer af typen *.gif eller *.jpg
Avatar billede bobbedude Nybegynder
06. december 2001 - 16:44 #2
der skal vel også sættes et X et sted i databasen så den ikke kører alle billederne igennem hver gang.
Avatar billede nute Nybegynder
06. december 2001 - 16:50 #3
hva er det du trenger hjelp til ? upload eller innlesing av filstruktur til db ?
Avatar billede bobbedude Nybegynder
06. december 2001 - 16:55 #4
nute >> det er ikke upload det er at når jeg via ftp har uploadet en mappe med billeder så skal den lave en kategori med navnet på mappen og sætte alle navnene på billed filerne i mappen ind i databasen
Avatar billede nute Nybegynder
06. december 2001 - 17:04 #5
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"\"\'Din DSN
Conn.Open DSN

Set fsoObj = Server.CreateObject(\"Scripting.FilesystemObject\")
Set foldObj = fsoObj.getFolder( \"c:\\IMAGES\" )
Set filesObj = foldObj.Files

for each file in filesObj
  SQL = \"SELECT COUNT(*) AS total FROM tabell WHERE filNavn = \'\"  & file.Path & \"\'\"
    Set RS = Conn.Execute( SQL )
    if( RS(\"total\") = \"0\" ) then
      SQL = \"INSERT INTO * tabell (filNavn) VALUES (\'\" & file.Path & \"\')\"
        Conn.Execute( SQL )
    end if
next
Avatar billede bobbedude Nybegynder
06. december 2001 - 18:30 #6
nute jeg cheker det lige lidt sener
Avatar billede bobbedude Nybegynder
06. december 2001 - 18:47 #7
Hej nute

Min DB ser sådan ud

db1.mdb

kategori
ID = Autonummerering
katnavn = tekst

tabell
ID = Autonummerering
kategori = tekst
filNavn = tekst


Jeg ville gerne have at navnet på mappen man uploader til images bliver sat ind i

( kategori ) og at alle filnavnene bliver sat ind i ( tabell ).

Jeg prøvede dit script men der sker ikke noget når jeg kører det.

<%
response.buffer = true
set connect = server.createobject(\"ADODB.Connection\")
Connect.open \"Driver={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.mappath(\"db1.mdb\")
set rs = connect.execute(\"SELECT * FROM tabel1 WHERE tekst = \" & reques(\"test\") & \" ORDER BY tekst\")


if not rs.EOF then
do until rs.EOF

response.write rs(\"id\") & \"-\" & rs(\"tekst\") & \"<br>\"
rs.movenext
Loop
else
response.write \"Ingen felter\"
end if
%>
Avatar billede bobbedude Nybegynder
06. december 2001 - 18:59 #8
hey nute det jeg mente var at i mappen IMAGES uploader jeg andre mapper IMAGES/Mappe1 osv.
Avatar billede nute Nybegynder
06. december 2001 - 19:42 #9
hvorfor har du kolonnen \'kategori\' i din \'tabell\' tabell ? skal den være det samme som \'katnavn\' i \'kategori\' tabellen `?
Avatar billede bobbedude Nybegynder
06. december 2001 - 20:09 #10
ja nute
Avatar billede nute Nybegynder
06. december 2001 - 20:15 #11
oki...så er det mer normalt å gjøre den til type nummer, så skal den mappe til ID i din kategori tabell. jeg lager det iallefall sånn ;-)

kan en fil tilhøre en underkategori til en kategori ? kan til folderstruktur fx. være \'c:\\images\\kategori\\subkategori\\bilde.gif\' ?

Avatar billede nute Nybegynder
06. december 2001 - 20:58 #12
oki...siden du ikke svarer, så tar jeg avgjørelsene for deg :-D

jeg forutsetter i dette script at din database (som heter db1.mdb) ser sådan ut:

********
kategori
********
ID_______autonummer
katnavn__text

******
tabell
******
ID_______autonummer
katID____nummer
filNavn__text

jeg forutsetter også at du ikke kan ha subkategorier av det format jeg forhørte meg om i forrige posting.

deretter skal du kjøre følgende script. Det *eneste* du trenger å gjøre for at det skal fungere, er at du endrer denne linje:

Call traverseFolders( \"c:\\inetpub\\wwwroot\\test\\IMAGES\" )

hvor du bytter ut \"c:\\inetpub\\wwwroot\\test\\IMAGES\" med stien til folder.

<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
dbConn = \"SERVER=local; DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"db1.mdb\")
Conn.Open dbConn

Set fso = Server.CreateObject(\"Scripting.FilesystemObject\")

Sub traverseFolders( folderParam )
  Set currentFolder = fso.getFolder( folderParam )
    Set subFolders = currentFolder.SubFolders
  for each folder in subFolders
      folderPath = folder.Path
      Set tmpFolders = fso.getFolder( folderPath ).SubFolders
        count = tmpFolders.Count
        if( count > 0 ) then
          Call traverseFolders( folderPath )
        else
          \' Legger data i database
            startSplit = InStr( folderPath, \"IMAGES\" ) + 7
            kategori  = MID( folderPath, startSplit )
           
            \' Kategori
            SQL = \"SELECT * FROM kategori WHERE katnavn = \'\" & kategori & \"\'\"
            Set RS = Conn.Execute( SQL )
           
            if( RS.BOF ) then
              SQL = \"INSERT INTO kategori (katnavn) VALUES (\'\" & kategori & \"\')\"
                Conn.Execute( SQL )
               
                RS.close
                Set RS = nothing
               
              response.write \"Ny kategori: \" & kategori & \"<br>\"
            end if
           
            \' Finner kategori ID
            SQL = \"SELECT ID FROM kategori WHERE katnavn = \'\" & kategori & \"\'\"
            Set RS = Conn.Execute( SQL )
            katID = RS(\"ID\")
           
            \' Filer
            Set files = folder.Files
            for each file in files
              filNavn = file.name
                SQL = \"SELECT * FROM tabell WHERE katID = \" & katID & \" AND filNavn = \'\" & filNavn & \"\'\"
                Set RS = Conn.Execute( SQL )
               
                if( RS.BOF ) then
                  SQL = \"INSERT INTO tabell ( katID, filNavn ) VALUES ( \" & katID & \", \'\" & filNavn & \"\')\"
                    Conn.Execute( SQL )
                   
                    response.write \"Ny fil: \" & filNavn & \" opprettet i kategori ( \" & kategori & \")<br>\"
                end if
            next
        end if
    next
end Sub
%>
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html>
<head>
<title>Til bobbedude ;-)</title>
</head>

<body>
<%

Call traverseFolders( \"c:\\inetpub\\wwwroot\\test\\IMAGES\" )
%>
</body>
</html>

håper det er hva du behøver...

/nute
Avatar billede bobbedude Nybegynder
06. december 2001 - 22:11 #13
nute >> jeg cheker det i morgen tidlig.
Og nej jeg skal ikke have under kategorier i kategorierne.
Avatar billede bobbedude Nybegynder
07. december 2001 - 07:39 #14
nute >> når jeg kører scriptet får jeg fejlen:

Microsoft OLE DB Provider for ODBC Drivers error \'800a004c\'

[Microsoft][ODBC Driver Manager] Driver\'s SQLSetConnectAttr failed

db.asp, line 9
Avatar billede bobbedude Nybegynder
07. december 2001 - 07:43 #15
Sorry nute det virker perfekt !!!!

Nute >> hvor mange point skal du have hvis den skulle laves så man også kunne have sub dir i + en side hvor kategorier og under kategorier vises ?? hvis du altså har tid og gider.

men det jeg har fået af dig nu er bare 100% for sejt det er ULTRA sejt.
Avatar billede nute Nybegynder
07. december 2001 - 09:11 #16
fint at du likte det :)

det krever litt mer omstendelig koding hvis du skal tillate subkategorier. Jeg har i tilfelle ikke tid til å lage det før i aften, men jeg kan da godt lage det, for det er da en liten utfordring ;-)

/nute
Avatar billede bobbedude Nybegynder
07. december 2001 - 09:16 #17
nute >> Jeg giver dig 100 ekstra point hvis du gør det. Jeg ved det ikke er penge og at din tid ikke er gratis men det er desværrer alt hvad jeg kan tilbyde dig.

Skal jeg åbne et nyt spørgsmål og kalde det til nute med de 100 ekstra point ?

Venlighilsen Bobbe
Avatar billede nute Nybegynder
07. december 2001 - 09:22 #18
næææ...det er ikke nødvendig...

100 poeng for total løsningen er iorden. jeg fortsetter bare i denne thread når jeg har fått kodet litt mer...
Avatar billede bobbedude Nybegynder
07. december 2001 - 09:25 #19
Jeg er dig dybt taknemlig nute :ø)
Avatar billede bobbedude Nybegynder
07. december 2001 - 20:09 #20
Hej nute >>

Jeg flyttede scriptet til en anden server her efter skriver den :

Ny kategori: der\\wildgame\\clipart\\images\\Chrismas

det der sker er at den tager hele stien med ( men hvorfor den skriver der aner jeg ikke. har du en løsning eller et råd ??
Avatar billede nute Nybegynder
07. december 2001 - 20:16 #21
jeg skal omskrive det litt...

jeg sitter akkurat nå og gjør meg ferdig med den nye funksjonaliteten...vender tilbake om ikke så altfor lenge (håper jeg)

:)
Avatar billede bobbedude Nybegynder
07. december 2001 - 20:18 #22
Du er en haj nute.

Jeg løste problemet ved at lave

startSplit = InStr( folderPath, \"IMAGES\" ) + 7

om til

startSplit = InStr( folderPath, \"IMAGES\" ) + 35


Men jeg venter med længsel på det helt færdige.

har du ICQ ??
Avatar billede nute Nybegynder
07. december 2001 - 20:28 #23
nja...det er ikke en god løsning...

har ikke ICQ installert...
Avatar billede bobbedude Nybegynder
07. december 2001 - 21:00 #24
ok nute så venter jeg på nyt fra dig ;ø)
Avatar billede nute Nybegynder
07. december 2001 - 22:58 #25
oki...så kommer det en litt \"forsinket\" oppdatering. Jeg må innrømme at det var litt vanskeligere enn jeg trodde, men det var nok på grunn av at jeg startet galt :-| jeg brukte et par timer på å prøve å løse problemet med feil taktikk og jeg kjørte meg fast i et spor. Så gikk jeg ut i 5 minutter, kom tilbake, startet på nytt og vupti...2o minutter senere var løsningen her :-)

anyway...jeg har gjort en liten endring i databasen...din \'kategori\' tabell skal se sånn ut:

ID________autonummer
katnavn___tekst
parentID__nummer

med hensyn til den lille ekstramodifikasjonen du kom med her til sist, så har jeg endret en metode...

istedenfor å skrive:

Call traverseFolders( \"c:\\inetpub\\wwwroot\\expert\\143307\\IMAGES\" )

skal du nå skrive:

Call traverseFolders( \"c:\\inetpub\\wwwroot\\expert\\143307\\IMAGES\", \"IMAGES\" )

Det første parameteret er hvilken sti du skal starte å hente subfoldere og filer fra, mens det andre parameteret er bare navnet på den folderen alle subfoldere og filer ligger under. jeg kan godt se at det er litt merkelig å gjøre det på denne måten, men nå synes jeg at jeg har brukt litt tid på denne, så jeg vil gjerne ha liit weekend :-)

ellers skal du bare kjøre denne kode, så håper jeg du er fornøyd...

<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
dbConn = \"SERVER=Localhost; DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"db1.mdb\")
Conn.Open dbConn

parentIDArr = Array(0)
parentIDArr(0) = 0
levelCount  = -1
catID    = 0

Set fso = Server.CreateObject(\"Scripting.FilesystemObject\")

Sub traverseFolders( folderParam, startFolder )
  Set currentFolder = fso.getFolder( folderParam )
    Set subFolders = currentFolder.SubFolders
  for each folder in subFolders
      redim preserve parentIDArr( UBOUND( parentIDArr ) + 1 )
      folderPath = folder.Path
      Set tmpFolders = fso.getFolder( folderPath ).SubFolders
        folderCount = tmpFolders.Count

    \' Legger data i database
      startSplit = InStr( folderPath, startFolder ) + ( LEN( startFolder ) + 1 )
      catPath    = MID( folderPath, startSplit )
     
        catName = findCatName( catPath, UBOUND( parentIDArr ) - 1 )
        catID  = findCategory( catName )
       
        if( catID = 0 ) then
          Call saveCategory( catName )
        end if
   
      Call saveFiles( folder )
        if( folderCount > 0 ) then
          Call traverseFolders( folderPath, startFolder )
        else
           
        end if
        redim preserve parentIDArr( UBOUND( parentIDArr ) - 1 )
    next
end Sub

function findCatName( catPath, index )
  catArr = Split( catPath, \"\\\" )
    findCatName = catArr( index )
end function

function findCategory( cat )
  SQL = \"SELECT * FROM kategori WHERE katNavn = \'\" & cat & \"\' AND parentID = \" & parentIDArr( UBOUND( parentIDArr ) - 1 )
    Set RS = Conn.Execute( SQL )
    if( RS.BOF ) then
      findCat = 0
        Exit function
    else
      findCat = CInt( RS(\"ID\") )
        RS.Close
        set RS = nothing
        Exit function
    end if
end function

sub saveCategory( katnavn )
    SQL = \"INSERT INTO kategori (katnavn, parentID) VALUES (\'\" & katnavn & \"\', \" & parentIDArr( UBOUND( parentIDArr ) - 1 ) & \")\"
    Conn.Execute( SQL )
    response.write \"Ny kategori: \" & katnavn & \"<br>\"
   
    \' Finding ID
    SQL = \"SELECT ID FROM kategori WHERE katnavn = \'\" & katnavn & \"\' AND parentID = \" & parentIDArr( UBOUND( parentIDArr ) - 1 )
    Set RS = Conn.Execute( SQL )
    parentIDArr( UBOUND( parentIDArr ) ) = RS(\"ID\")

    RS.close
    Set RS = nothing
end sub

sub saveFiles( folder )
    \' Filer
    Set files = folder.Files
    for each file in files
    filNavn = file.name
    SQL = \"SELECT * FROM tabell WHERE katID = \" & parentIDArr( UBOUND( parentIDArr ) ) & \" AND filNavn = \'\" & filNavn & \"\'\"
    Set RS = Conn.Execute( SQL )
   
    if( RS.BOF ) then
      SQL = \"INSERT INTO tabell ( katID, filNavn ) VALUES ( \" & parentIDArr( UBOUND( parentIDArr ) ) & \", \'\" & filNavn & \"\')\"
        Conn.Execute( SQL )
       
        response.write \"&nbsp;&nbsp;&nbsp;Ny fil: \" & filNavn & \" opprettet<br>\"
    end if
    next
end sub
%>
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html>
<head>
<title>Til bobbedude ;-)</title>
</head>

<body>
<%
Call traverseFolders( \"c:\\inetpub\\wwwroot\\expert\\143307\\IMAGES\", \"IMAGES\" )
%>
</body>
</html>

/nute
Avatar billede bobbedude Nybegynder
08. december 2001 - 10:30 #26
Nute du er en haj !!

Et sidste spørgsmål hvordan skal siden det skal vises på se ud.

Nute jeg vil meget gerne have din email så jeg kan sende det færdige script til dig.
Avatar billede bobbedude Nybegynder
08. december 2001 - 10:52 #27
Nute >> af en eller anden grund sker der noget mærkeligt på min server når jeg kører update.

Jeg har et dir :
D:\\Kunder\\netland\\clipart\\IMAGES

Hvis jeg laver en Folder i Mappen IMAGES der hedder Chrismas og i denne laver en folder der hedder Chrismas2 Kommer den første folder til at hede ( der ) og Sub Folderen til at hedde  ( netland ).
Avatar billede bobbedude Nybegynder
08. december 2001 - 12:21 #28
Hej nute jeg har næsten fået det kategori visning til at køre

<%
response.buffer = true
set connect = server.createobject(\"ADODB.Connection\")
Connect.open \"Driver={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.mappath(\"images.mdb\")
Set rs = Connect.Execute(\"SELECT * FROM kategori WHERE parentID = 0\")

if not rs.EOF then
do until rs.EOF
%>
<a href=test.asp?linkid=<%=rs(\"id\")%>> <%=rs(\"id\")%> - <%=rs(\"katnavn\")%></a><br>
<%

if Cint(Request.QueryString(\"linkid\")) = rs(\"id\") then

Set rs2 = Connect.Execute(\"SELECT * FROM kategori WHERE parentID = \" & request(\"linkid\") & \"\")


if not rs2.EOF then
do until rs2.EOF
%>
<%=rs2(\"id\")%> - <%=rs2(\"katnavn\")%><br>
<%
rs2.MoveNext
Loop
else
Response.Write \"Ingen Links i denne kategori!\"
  end if

end if
rs.movenext
Loop
else
response.write \"Ingen felter\"
end if
%>


Men hvad nu hvis dert ikke er nogen sub kategorier ??
Avatar billede nute Nybegynder
08. december 2001 - 14:05 #29
hmmm....jeg ser det er en liten bug i det systemet jeg har postet...jeg er nødt til å skrive litt mer på det. jeg skal også tenke på de ting du har påpeket...

/nute
Avatar billede bobbedude Nybegynder
08. december 2001 - 16:05 #30
ok nute jeg venter og ser hvad du finder ud af.
Husk hvis du vil vil jeg meget gerne smide 100 point mere da jeg er utrolig glad for du gider hjælpe mig !
Avatar billede bobbedude Nybegynder
08. december 2001 - 16:32 #31
Nute >> Jeg sidder jo og roder videre med scriptet. Jeg har fundet et lille problem mere.

Når jeg viser billederne gør jeg det via:

<img src=\"<%=rs(\"katnavn\")%>/<%=rs2(\"imgname\")%>

Det virker fint så længe jeg ikke har under kategorier, hvis jeg har det så er stien jo ikke korrekt mere.
Avatar billede nute Nybegynder
08. december 2001 - 17:46 #32
hvordan ønsker du egentlig at output\'et skal være ?
Avatar billede bobbedude Nybegynder
08. december 2001 - 17:58 #33
hvis den hele sti er :

c:/inetpub/wwwroot/web/MITWEB/clipart/Images

kunne det være fedt hvis den lagde

images/billedfolder/billed.jpg

eller

images/billedfolder/subfolder/billed.jpg

Eller hvis den kunne gemme navnet på filen i en række og stien i en anden.

Avatar billede nute Nybegynder
08. december 2001 - 19:40 #34
så er det noe klart til deg...

http://www.friserverplads.dk/nute/ex143307/143307.zip

det eneste du skal gjøre i filen \'addFiles.asp\' er å endre stien til din folder med bildene. Dette gjør du i linjen:

Call traverseFolders( \"c:\\inetpub\\wwwroot\\expert\\143307\\IMAGES\" )

deretter kan du kjøre filen \'listKategorier.asp\' for å se hvilke filer som ligger i hvilken kategori...

/nute

Avatar billede bobbedude Nybegynder
08. december 2001 - 20:09 #35
nute >> linket er dødt
Avatar billede nute Nybegynder
08. december 2001 - 20:11 #36
friserverplads.dk er nede :-|
Avatar billede nute Nybegynder
08. december 2001 - 20:11 #37
hvis du har en mailadresse, så kan jeg sende den til deg...
Avatar billede bobbedude Nybegynder
08. december 2001 - 20:18 #38
bobbe@direkte.org
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