03. november 2010 - 19:12Der er
25 kommentarer og 1 løsning
Upload med db
jeg vil gerne have nedenstående form og kode, som ellers virker ok, til at få lagt filnavnene i db under brugerens id, hvordan gør jeg det? ´Det er noget med at få lagt noget kode på a la denne: strSQL = "select * from bruger where id = '" & Request("id") & "'"
Er der nogen som har et forslag? Mvh. rwj form: <form action="111.asp" method="post" enctype="multipart/form-data"> <input type="text" name="id" value="<%=request("id")%>"> <input type="file" size=40 name="File1" id="t3"><br><br> <input type="file" size=40 name="File2" id="t3"><br><br> <input type="file" size=40 name="File3" id="t3"><br><br> <input type="submit" id="submit" value="Tilføj fotos"></form> kode: <% Dim objUpload ' Definer en variabel til objektet Set objUpload = Server.CreateObject("aspSmartUpload.SmartUpload") objUpload.MaxFileSize = 500000 On Error Resume Next Dim strUploadPath ' Definer en variabel til stien strUploadPath = "upload" Dim intFileCount objUpload.Upload intFileCount = objUpload.Save(Server.MapPath(strUploadPath)) If Err Then Response.Write "Der opstod en fejl :<br>" & vbCrLf Response.Write Err.Description Else Response.Write intFileCount & " fil(er) uploadet.<br>" & vbCrLf Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("test.mdb")
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
det ser den da ud til at gøre strSQL = "Insert into tabel (id, File1, File2, File3) values('" & Replace(objUpload.Form("id"), .... er det ikke bare, når du trækker data ud, at du mangler at kunne søge på bruger?
Synes godt om
Slettet bruger
03. november 2010 - 19:33#2
Nej, den lægger navnene ind i en anden tabel med det korrekte id, men jeg vil gerne have det lagt i en tabel under den bruger som uploader under hans id. mvh. rwj
det er jo det, den gør - hvis du vil se brugerens uploadede filer, så er det jo bare at spørge efter dem. Du skal da ikke oprette en tabel til hver bruger. for at hente data, så er det: strSQL = "select * from tabel where id = '" & Request("id") & "'" og så har du listen med uploadede filer.
det er så bare dybt dumt at have "Insert into tabel (id, File1, File2, File3) med op til 3 filnavne i hver post - det ville være langt smartere med én id og én fil pr post, og så oprette 3 poster hvis der uploades 3 filer på en gang.
Synes godt om
Slettet bruger
03. november 2010 - 19:55#4
jeg er ikke så meget inde i koderne, men som det er nu, kan brugeren oprette en profil, og efterfølgende uploade 3 foto. De foto ender så i en ny tabel, hvor alle brugers foto ligger under deres id. Foto til de forskellige kan så hentes via deres id, no problem, men jeg ville gerne gøre det rigtige, som jeg troede var at lægger filerne under brugerens profiler. Kan jeg forstå det således, at det er bedst med en tabel for foto? mvh rwj
når det er begrænset til 3 billeder, så behold det nuværende system - en post pr billede er beregnet til x antal billeder.
Du har tabellen 'bruger' - i den skal du oprette 3 nye felter i samme stil som dem i 'tabel' (File1, File2, File3). og så skal du rette alle 'tabel' til 'bruger' fx i strSQL = "Insert into tabel (id, File1, File2, File3) values('" & Replace(objUpload.Form("id"), "'", "''") & "', '" & Replace(objUpload.Files.Item("File1").FileName, "'", "''") & "', '" & Replace(objUpload.Files.Item("File2").FileName, "'", "''") & "', '" & Replace(objUpload.Files.Item("File3").FileName, "'", "''") & "')"
og så lige en rutine, der flytter alle nuværende data over på eksisterende brugere, så de ikke mister data. Du har en mdb-database - hvis du har access på din pc, så er det lettest at trække databasen ned og bruge access til at oprette felter og flytte data. Ellers skal du lave lidt asp-kode som kun køres en gang.
Synes godt om
Slettet bruger
04. november 2010 - 12:38#6
Håber jeg har forstået dig ret, for jeg har oprettet 3 nye poster i tabellen BRUGER , henholdsvis File1 File2 File3 og har samtidig ændret i koden at data skal gemmes i tabellen BRUGER.
Der er ingen problem med upload, foto ender i mappen Upload, men der kommer ingen yderligere data i tabellen bruger, udover de data som brugeren allerede har smidt ind i ved oprettelse.
det er min tanketorsk - insert into er ved oprettelse af ny post, og bruger findes jo i forvejen. Vi skal have fat i update, som har et lidt andet layout.
strSQL = "UPDATE bruger SET File1='" & Replace(objUpload.Files.Item("File1").FileName, "'", "''"), File2='" & Replace(objUpload.Files.Item("File2").FileName, "'", "''"), File3='" & Replace(objUpload.Files.Item("File3").FileName, "'", "''") WHERE id=" & Replace(objUpload.Form("id"), "'", "''")
Synes godt om
Slettet bruger
04. november 2010 - 13:32#8
jeg får følgende fejl i koden:
Microsoft VBScript compilation error '800a0401' Expected end of statement (hvis den siger dig noget?)
strSQL = "UPDATE bruger SET File1='" & Replace(objUpload.Files.Item("File1").FileName, "'", "''"), File2='" & Replace(objUpload.Files.Item("File2").FileName, "'", "''"), File3='" & Replace(objUpload.Files.Item("File3").FileName, "'", "''") WHERE id=" & Replace(objUpload.Form("id"), "'", "''")
det er det der med " og ' - sætningen skal 'gå op' - prøv med dette strSQL = "UPDATE bruger SET File1='" & Replace(objUpload.Files.Item("File1").FileName, "'", "''") & "', File2='" & Replace(objUpload.Files.Item("File2").FileName, "'", "''") & "', File3='" & Replace(objUpload.Files.Item("File3").FileName, "'", "''") WHERE id=" & Replace(objUpload.Form("id"), "'", "''")
Synes godt om
Slettet bruger
04. november 2010 - 15:00#10
desværre, stadig samme problem. Der kommer denne fejl besked og foto bliver ikke uploaded til mappen. Jeg har tjekket om db og der er oprettet de fornøde felter.
så vil din sidedesign lige gå død - men der kommer to linjer og imellem dem vises databasekaldet. kopier det, og sæt det ind her - så kan jeg tælle " og ' efter.
Synes godt om
Slettet bruger
04. november 2010 - 16:06#12
foto blev nu uploadet i mappen upload og så kom denne besked:
du har ikke fået fat i #9 - sætningen skal laves HELT OM til strSQL = "UPDATE bruger SET File1='" & Replace(objUpload.Files.Item("File1").FileName, "'", "''") & "', File2='" & Replace(objUpload.Files.Item("File2").FileName, "'", "''") & "', File3='" & Replace(objUpload.Files.Item("File3").FileName, "'", "''") WHERE id=" & Replace(objUpload.Form("id"), "'", "''")
der skal IKKE være noget med Insert into (den skal væk).
Synes godt om
Slettet bruger
04. november 2010 - 16:56#14
ja, min fejl, sådan går det når man kopierer:-) Jeg smed ny kode ind som du lagde i sidste kommentar, og fik denne fejlbesked.
Microsoft VBScript compilation error '800a0401' Expected end of statement
der blev ikke uploaded i mappen eller lagt nogen filer i db
og så skift lige conn.execute ud med response.write "<hr>" & strSQL & "<hr>" så jeg kan se kaldet i dets nuværende form.
Synes godt om
Slettet bruger
04. november 2010 - 17:36#16
ok og hele koden ser sådan ud nu:
<% Dim objUpload ' Definer en variabel til objektet Set objUpload = Server.CreateObject("aspSmartUpload.SmartUpload") objUpload.MaxFileSize = 500000 On Error Resume Next Dim strUploadPath ' Definer en variabel til stien strUploadPath = "upload" Dim intFileCount objUpload.Upload intFileCount = objUpload.Save(Server.MapPath(strUploadPath)) If Err Then Response.Write "Der opstod en fejl :<br>" & vbCrLf Response.Write Err.Description Else Response.Write intFileCount & " fil(er) uploadet.<br>" & vbCrLf Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("db/test.mdb")
Conn.Open DSN
strSQL = "UPDATE bruger SET File1='" & Replace(objUpload.Files.Item("File1").FileName, "'", "''") & "', File2='" & Replace(objUpload.Files.Item("File2").FileName, "'", "''") & "', File3='" & Replace(objUpload.Files.Item("File3").FileName, "'", "''") WHERE id=" & Replace(objUpload.Form("id"), "'", "''")
conn.execute
Conn.Execute(strSQL) Conn.Close Set Conn = Nothing End If On Error Goto 0 Set objUpload = Nothing %>
ups - fjelen ligger her ) WHERE id=" & Replace(objUpload.Form("id"), "'", "''") der mangler et led - klip nu præcist: ) & " WHERE id=" & Replace(objUpload.Form("id"), "'", "''")
så mellem ) og Where skal der to tegn + mellemrum ind & "
Synes godt om
Slettet bruger
05. november 2010 - 08:23#21
Jeg får følgende besked og filer er uploaded, men der bliver ikke smidt noget i db 3 fil(er) uploadet.
UPDATE bruger SET File1='rwj1.jpg', File2='rwj2.jpg', File3='rwj3.jpg WHERE id=1234
og tjekket på UPDATE bruger SET File1='rwj1.jpg', File2='rwj2.jpg', File3='rwj3.jpg WHERE id=1234 viser jo klart, at der mangler en ' efter det 3. filnavn, så ret kaldet til strSQL = "UPDATE bruger SET File1='" & Replace(objUpload.Files.Item("File1").FileName, "'", "''") & "', File2='" & Replace(objUpload.Files.Item("File2").FileName, "'", "''") & "', File3='" & Replace(objUpload.Files.Item("File3").FileName, "'", "''") & "' WHERE id=" & Replace(objUpload.Form("id"), "'", "''")
Synes godt om
Slettet bruger
05. november 2010 - 12:47#23
ingen ændringer, foto bliver uploadet, men filnavne ikke gemt, meldingen er:
3 fil(er) uploadet. UPDATE bruger SET File1='rwj1.jpg', File2='rwj2.jpg', File3='rwj3.jpg', WHERE id=1237
ok - fjern lige det komma, som er kommet ind lige før WHERE derefter kan du slette linjen response.write "<hr>" & strSQL & "<hr>" og indsætte Conn.Execute(strSQL)
i stedet - så bliver databasen opdateret.
Synes godt om
Slettet bruger
05. november 2010 - 13:32#25
Ja, det funker sørme:-)
Tak for det, jeg tænkte på, burde der ikke være et funktion som hindrede andre i at uploade et foto med samme navn?
lav et spg i asp med aspSmartUpload som en del af overskrift på spg. Så kan du nok hurtigt få hjælp til at tjekke om filnavn findes i forvejen, og i givet fald bede bruger om at skifte navn på filen. Hvis det er bruger selv, der har den tidligere fil (se på id), så må den overskrives - ellers skal den afvises.
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.