18. oktober 2006 - 11:47Der er
40 kommentarer og 1 løsning
Filnavn til database
Jeg har 2 filer som jeg uploader til min server igennem en form og når de er uploaded skal filnavnet tilføjes til min database.
Det virker fint med file1 (<INPUT TYPE="FILE" NAME="FILE1"> og den kommer ind i databasen med navnet ("PIC" feltet), men file2 filnavnet kommer ikke ind. (<INPUT TYPE="FILE" NAME="FILE2">
Jeg er klar over jeg skal have lavet nogle ændringer ved file.FileName når den bliver tilføjet, men ved ikke helt hvad.
Jeg har følgende kode:
<% For Each File in Upload.Files filename = File.FileName %> <% = File.OriginalPath %></B></TD> <% =File.Size %> bytes</TD> <% =File.OriginalSize %> bytes</TD><TR>
<% ' Tilfojer til databasen Set Connect = Server.CreateObject("ADODB.Connection") Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("/dab/movies.mdb") Set rs = Server.CreateObject("ADODB.Recordset") Addera = "SELECT * FROM seneste " rs.Open Addera, Connect, 3, 3
Din opdatering af databasen skal ligge under "For Each File in Upload.Files"
Eks.
<% For Each File in Upload.Files 'Her bliver billedet uploadet ' --- Indsætkoden til upload her -----
'Her bliver navnet på billede x gemt i databaseb strSQL = "INSERT INTO seneste (pic) VALUES ('"& Fils.Filename &"')" Conn.Execute(strSQL) Next %>
Synes godt om
Slettet bruger
18. oktober 2006 - 12:19#2
Det er 2 forskellige tabeller jeg vil sætte filnavnene ind i. Altså "file1" skal i "PIC" og "file2" skal i "billedekategori"
Skal jeg så ændre strSQL = "INSERT INTO seneste (pic) VALUES ('"& File.Filename &"')" til strSQL = "INSERT INTO seneste (billedekategori) VALUES ('"& File2.Filename &"')" Eller hvordan klarer jeg det?
Som du selv har lavet dit egen update så vil du insætte filnavnet i tabellen der hedder seneste, men benytte filnavnet i 2 forskellige kolonner:
"SELECT * FROM seneste " <-- her vælger du tabellen seneste rs("pic") = File.FileName <-- her vil du bruge filnavnet i kolonnen pic i tabellen seneste rs("billedekategori") = File.FileName <-- her vil du bruge filnavnet i kolonnen billedekategori i tabellen seneste
Så som du kan se har du kun opgivet navnet på én tabel men 2 kolonner (3 faktisk da du har opgivet navnet på en som hedder beskrivelse også)
hvis jeg forstår dig ret skal du lave dem sådan her:
Ups.. min fejl... i 2 forskellige kolonner selvfølgelig.. :-) Beklager. Og i sammen tabel som hedder seneste, som du også har forstået.
Okay, kan den selv finde ud af at der er 2 forskellige navne selvom man skriver File.FileName på begge steder? Laver den automatisk et array eller hvordan forgår det?
Præcis, den lavet et "array" med dine filer, hvis du fx prøvet følgende script:
<% For Each File in Upload.Files response.write File.Filename &"<br />" Next %>
Vil du se at den finde de filer du uploader, uanset om det er 2 eller 10, så derfor skal du blot flytte din "INSERT INTO..." ind i "For Each File in Upload.Files", på den måde vil den indsætte et nyt record i din database for hver gang den finder en ny fil.
Okay, så er jeg ved at fatte hvordan det fungerer.. :-) Jeg kan bare ikke rigtigt få det til at virke med følgende kode, men har sikkert lavet et eller andet forkert. Kan du se hvad der er galt? Evt. lige ændre koden så det passer. :-)
<% Set Upload = Server.CreateObject("Persits.Upload.1")
Upload.OverwriteFiles = False On Error Resume Next
If t = 1 Then strSQL = "INSERT INTO seneste (pic) VALUES ('"& File.Filename &"')" Conn.Execute(strSQL) Fil1 = File.Filename Else strUpdate = "UPDATE seneste SET billedekategori = '"& File.Filename &"', beskrivelse = ''"& strKommentar &"' WHERE pic = '"& File1& "'" Conn.Execute(strUpdate) End If
Next
End if %>
Synes godt om
Slettet bruger
18. oktober 2006 - 16:34#13
Den opdaterer kun "PIC" og der er intet i "BILLEDEKATEGORI".. Men når det er en else sætning tager den vel også kun det der er = 1 altså inden "ELSE" eller hvad?
If t = 1 Then strSQL = "INSERT INTO seneste (pic) VALUES ('"& File.Filename &"')" Conn.Execute(strSQL) Fil1 = File.Filename Else strUpdate = "UPDATE seneste SET billedekategori = '"& File.Filename &"', beskrivelse = ''"& strKommentar &"' WHERE pic = '"& Fil1 &"'" Conn.Execute(strUpdate) End If Next
End if %>
Synes godt om
Slettet bruger
19. oktober 2006 - 21:39#17
Har du givet op? :-) Fair nok hvis du ikke gider rode mere med det... Tror bare vi er tæt på løsningen nu... Det er jo kun lige i "BILLEDEKATEGORI" feltet der mangler filnavn data fra file2...
Den kommer ud med følgende: Success! 2 file(s) have been uploaded. friday_the_13th_crash.jpg 4053 bytes 4053 bytes polarbearamok.jpg 3722 bytes 3722 bytes UPDATE seneste SET billedekategori = 'polarbearamok(3).jpg', beskrivelse = ''' WHERE pic = 'friday_the_13th_crash(2).jpg'
I følgende rettelse går jeg ud fra, at du har et id som bliver autonummereret hver gang du indsætter et billede:
If t = 1 Then strSQL = "INSERT INTO seneste (pic) VALUES ('"& File.Filename &"')" Conn.Execute(strSQL) set sID = Conn.Execute("SELECT @@IDENTITY AS NewID") Session("senesteid") = sID("NewID") Else strUpdate = "UPDATE seneste SET billedekategori = '"& File.Filename &"', beskrivelse = ''"& strKommentar &"' WHERE id = '"& Session("senesteid") &"'" Conn.Execute(strUpdate) Session("senesteid") = "" End If
du huskede at lave opdateringen jeg skrev 23/10-2006 15:51:50 ik? så den kommer til at hedde:
If t = 1 Then strSQL = "INSERT INTO seneste (pic) VALUES ('"& File.Filename &"')" Conn.Execute(strSQL) set sID = Conn.Execute("SELECT @@IDENTITY AS NewID") Session("senesteid") = sID("NewID") Else strUpdate = "UPDATE seneste SET billedekategori = '"& File.Filename &"', beskrivelse = ''"& strKommentar &"' WHERE id = "& Session("senesteid") &"" Conn.Execute(strUpdate) Session("senesteid") = "" End If
Synes godt om
Slettet bruger
24. oktober 2006 - 14:29#31
Ja, jeg skulle have gjort som du sagde... Her er koden som den ser ud nu:
If t = 1 Then strSQL = "INSERT INTO seneste (pic) VALUES ('"& File.Filename &"')" Conn.Execute(strSQL) set sID = Conn.Execute("SELECT @@IDENTITY AS NewID") Session("senesteid") = sID("NewID") Else strUpdate = "UPDATE seneste SET billedekategori = '"& File.Filename &"', beskrivelse = ''"& strKommentar &"' WHERE id = "& Session("senesteid") &"" Conn.Execute(strUpdate) Session("senesteid") = "" End If Next End If %>
Synes godt om
Slettet bruger
24. oktober 2006 - 14:30#32
Og min database hedder: movies.mdb og har tabellen: seneste og felterne:
Id: Autonummering beskrivelse: Tekst pic: Tekst billedekategori: Tekst
der er en ' for meget ... har jeg først set nu, når du har fjernet den så burde det virke:
Else strUpdate = "UPDATE seneste SET billedekategori = '"& File.Filename &"', beskrivelse = '"& strKommentar &"' WHERE id = "& Session("senesteid") &"" Conn.Execute(strUpdate) Session("senesteid") = "" End If
Synes godt om
Slettet bruger
24. oktober 2006 - 19:28#36
YES SIR!!! Så virker det!! :-) Dog kommer beskrivelsen ikke ind? Er det fordi "Kommentar" er med stort K ? det er jo med lille i formen, eller betyder det ikke noget?
skulle ikke umiddelbart mene at det betyder noget, men det gør det derimod at din form har følgende ENCTYPE="multipart/form-data", kan godt nok ikke se hvordan du definere strKommentar, men kunne næsten forstille mig, at det er med en alm. request.form("kommentar"), hvor du i stedet skal definere den som Upload.Form("kommentar") og så husk lige at lav en replace på den så den kommer til at hedde:
Jeg er kommet langt i projektet efter du fik mig igennem dette her problem.. Nu sidder jeg bare fast fordi den har slettet 2 felter i min database og der står bare #SLETTET i hver kolonne og så går scriptet død når den kommer dertil. Når jeg prøver at slette dem i access sletter den dem fint, men når jeg åbner databasen er de der stadig... Meget underligt..
Synes godt om
Ny brugerNybegynder
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.