Avatar billede Slettet bruger
03. november 2010 - 19:12 Der 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")

Conn.Open DSN

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, "'", "''") & "')"

Conn.Execute(strSQL)
Conn.Close
Set Conn = Nothing
End If
On Error Goto 0
Set objUpload = Nothing
%>
Avatar billede claes57 Ekspert
03. november 2010 - 19:28 #1
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?
Avatar billede 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
Avatar billede claes57 Ekspert
03. november 2010 - 19:47 #3
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.
Avatar billede 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
Avatar billede claes57 Ekspert
04. november 2010 - 09:35 #5
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.
Avatar billede 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.

koden ser sådan ud:
strSQL = "Insert into bruger (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, "'", "''") & "')"

Der må mangle en funktion som henviser filnavnene til den specifikke bruger og gemmer dem under hans profil. mvh. rwj
Avatar billede claes57 Ekspert
04. november 2010 - 13:23 #7
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"), "'", "''")
Avatar billede 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"), "'", "''")

mvh. rwj
Avatar billede claes57 Ekspert
04. november 2010 - 13:43 #9
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"), "'", "''")
Avatar billede 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.

Mvh rwj
Avatar billede claes57 Ekspert
04. november 2010 - 15:44 #11
"Der kommer denne fejl besked" ?
den vil jeg så gerne læse...
Eller - bedre endnu - vi tjekker lige kaldet. ret stykket med

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, "'", "''") & "')"

Conn.Execute(strSQL)

til

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, "'", "''") & "')"

response.write "<hr>" & strSQL & "<hr>"

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.
Avatar billede Slettet bruger
04. november 2010 - 16:06 #12
foto blev nu uploadet i mappen upload og så kom denne besked:

3 fil(er) uploadet.

--------------------------------------------------------------------------------
Insert into tabel (id, File1, File2, File3) values('1227', 'rene.jpg', 'rene123456789.jpg', 'reneneneenene.jpg')

det blev ikke smidt noget i db

mvh. rwj
Avatar billede claes57 Ekspert
04. november 2010 - 16:48 #13
jeg fjernede opdatering i db, så jeg kunne se kaldet. Ellers ville den bare dø inden den skrev kaldet.

Insert into tabel (id, File1, File2, File3) values('1227', 'rene.jpg', 'rene123456789.jpg', 'reneneneenene.jpg')

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).
Avatar billede 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

mvh rwj
Avatar billede claes57 Ekspert
04. november 2010 - 17:27 #15
og så skift lige
conn.execute
ud med
response.write "<hr>" & strSQL & "<hr>"
så jeg kan se kaldet i dets nuværende form.
Avatar billede 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
%>

og virker stadig ikke:-)

mvh rwj
Avatar billede claes57 Ekspert
04. november 2010 - 18:04 #17
de to linjer
conn.execute

Conn.Execute(strSQL)

slet dem, og sæt dette ind i stedet

response.write "<hr>" & strSQL & "<hr>"

så kører linjen igen til skærm, så jeg kan rette det sidste...
Avatar billede Slettet bruger
04. november 2010 - 18:41 #18
så går det sådan her:

Microsoft VBScript compilation error '800a0401'

Expected end of statement

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"), "'", "''")

mvh rwj
Avatar billede claes57 Ekspert
04. november 2010 - 20:01 #19
det er ikke den kode, jeg ville se - kom lige med den, så jeg kan placere mit 'dump'
Avatar billede claes57 Ekspert
04. november 2010 - 20:06 #20
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
& "
Avatar billede 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

den nye kode ser således ud:

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"), "'", "''")

mvh rwj
Avatar billede claes57 Ekspert
05. november 2010 - 12:21 #22
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"), "'", "''")
Avatar billede 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

mvh. rwj
Avatar billede claes57 Ekspert
05. november 2010 - 13:22 #24
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.
Avatar billede 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?

Smid et svar, så du kan få dine point.

God weekend.

rwj
Avatar billede claes57 Ekspert
05. november 2010 - 13:56 #26
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.
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