Avatar billede karstenl Nybegynder
15. november 2005 - 20:02 Der er 33 kommentarer og
1 løsning

Update billede i DB.

Hey :-)

Sidder og roder med noget, Upload billed.
Og det virker egentlig fint nok, men det driller når jeg skal "UPDATE" billederne.

Nedenstående viser scriptet der "Updater":
--------------------------------------------------
<%
Set Upload = Server.CreateObject("Persits.Upload")
Upload.Save "c:\xxx\xxx\xxx\xxx.dk\Upload"

Set File = Upload.Files("THEFILE")

If Not File Is Nothing Then

  Connect = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../../../db/ubc/ubc_db.mdb")
 
  SQL = "UPDATE tbl_linkMaps SET img=?, name='newname.ext' WHERE id= " & request("ID")
  SQL = SQL & File.Filename & "', '"
  SQL = SQL & Replace(Upload.Form("image_beskrivelse"), "'", "''") & "', "
  SQL = SQL & File.Size & ")"


  File.ToDatabase Connect, SQL
  Response.Write "File saved."
Else
  Response.Write "File not selected."
End If
%>
--------------------------------------------------

Men får denne fejl:
--------------------------------------------------
Request object error 'ASP 0208 : 80004005'

Cannot use generic Request collection

/firmamappe/ubc/linkmaps/upload_pic_save.asp, line 14

Cannot use the generic Request collection after calling BinaryRead.

--------------------------------------------------
Linie 14:  SQL = "UPDATE tbl_linkMaps SET img=?, name='newname.ext' WHERE id= " & request("ID")
--------------------------------------------------

Så den kan åbenbart ikke bruge "Request", men hvad gør jeg så?
(Den Request'er ID fra et hidden form felt på skrive siden)

Håber nogle kan hjælpe :)
Avatar billede trekkies Juniormester
15. november 2005 - 20:06 #1
Har du prøvet at hente id'et med WHERE id= " & Upload.Form("ID") ???
Avatar billede karstenl Nybegynder
15. november 2005 - 20:06 #2
Har prøvet at skrive:
request("ID").. på alle mulige måde, men hjælper ikke rigtig.
& request("ID") &
+ request("ID") +
& Request.Form("id")
Avatar billede karstenl Nybegynder
15. november 2005 - 20:06 #3
nej, prøver jeg lige, 2 sec.
Avatar billede karstenl Nybegynder
15. november 2005 - 20:10 #4
Så jeg denne:
--------------------
Persits.Upload.1 error '800a001c'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'id= 3mig2.jpg', 'mig', 31471)'.

/firmamappe/ubc/linkmaps/upload_pic_save.asp, line 20
--------------------
Men jeg kan se at den hiver ID'en ud = 3.. og det ér det rigtige ID. nr.
Avatar billede karstenl Nybegynder
15. november 2005 - 20:11 #5
Linie 20
File.ToDatabase Connect, SQL
Avatar billede karstenl Nybegynder
15. november 2005 - 20:13 #6
Den der hiver ID'en med over ser iøvrigt sådan her ud:
<input type="hidden" name="id" value="<%=rs("ID")%>">

Hvis det er nogen hjælp.
Avatar billede trekkies Juniormester
15. november 2005 - 20:17 #7
Den ser fint ud, hvordan ser din action form ud?
Avatar billede karstenl Nybegynder
15. november 2005 - 20:19 #8
Den Uploader iøvrigt FILEN fint nok til Serveren, men Updater ikke DB'en
Avatar billede karstenl Nybegynder
15. november 2005 - 20:20 #9
Hele siden ser sådan her ud:
---------------------------------
<%
Set cn = Server.CreateObject("ADODB.Connection")
OpenString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("../../../db/ubc/ubc_db.mdb")
cn.Open OpenString

Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open "SELECT * FROM tbl_linkmaps WHERE ID = " & request("ID"), cn
%>

<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="upload_pic_save.asp">

File:<br>
<INPUT TYPE=FILE NAME="THEFILE" size="21"><br>

Beskrivelse:<br>
<textarea NAME="image_beskrivelse"></textarea>

<br>
<INPUT TYPE=SUBMIT VALUE="Upload!">


<input type="hidden" name="id" value="<%=rs("ID")%>">
</FORM>

<%
rs.close
cn.close
%>

</BODY>
</HTML>

---------------------------------
Avatar billede trekkies Juniormester
15. november 2005 - 20:22 #10
Prøv følgende:
<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="upload_pic_save.asp?id=<%=id%>">
Avatar billede trekkies Juniormester
15. november 2005 - 20:26 #11
Prøv dette:
Ind sæt denne:
Response.Write SQL

lige før:
File.ToDatabase Connect, SQL

og sæt ' foran den.

Så det kommer til at se sådan ud:
Response.Write SQL
'File.ToDatabase Connect, SQL

Hvad siger den?
Avatar billede karstenl Nybegynder
15. november 2005 - 20:28 #12
Så får jeg stort set samme fejl :/
-------------------------------------
Persits.Upload.1 error '800a001c'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'id= 3lejlighed.gif', 'Lejlighed', 107527)'.

/firmamappe/ubc/linkmaps/upload_pic_save.asp, line 20
-------------------------------------
Avatar billede karstenl Nybegynder
15. november 2005 - 20:29 #13
hov.. ovenstående fejl er til kl. 20.22:18

prøver lige det sidste.
Avatar billede karstenl Nybegynder
15. november 2005 - 20:36 #14
Så skriver den:
------------------
UPDATE tbl_linkMaps SET img=?, name='newname.ext' WHERE id= 3lejlighed.gif', 'Lejlighed', 107527)File saved.
Avatar billede trekkies Juniormester
15. november 2005 - 20:42 #15
Jeg laver en lille test her hos mig, vent venligst ...
Avatar billede karstenl Nybegynder
15. november 2005 - 20:53 #16
ok :)
Avatar billede karstenl Nybegynder
15. november 2005 - 20:55 #17
Den virker iøvrigt fint nok med:
INSERT INTO

Det er kun UPDATE, den driller med.
Avatar billede trekkies Juniormester
15. november 2005 - 20:56 #18
Det er fordi at den skal bruge et id.
Avatar billede karstenl Nybegynder
15. november 2005 - 21:00 #19
Ja, det ved jeg dog ;)
Avatar billede trekkies Juniormester
15. november 2005 - 22:13 #20
Jeg har nu prøvet forskellige løsninger, men jeg får altid en fejl meddelse :(

Jeg opretter et spørgsmål her på eksperten.dk, så kan vi se nogle andre kan finde ud af det.
Avatar billede trekkies Juniormester
15. november 2005 - 23:47 #21
Prøv dette:
Siden du kommer fra, skal du indsætte denne sætning:
<%
Session("id") = rs("id")
%>
Den lægger dit id i en session, som vi skal bruge til din SQL sætning på den siden hvor at du gemmer oplysningerne i databasen.

Prøv denne SQL:
SQL = "UPDATE tekst SET filename ='" & File.Filename & "', image_beskrivelse='" & Replace(Upload.Form("image_beskrivelse"), "'", "''") & "', " & File.Size & ") WHERE ID=" & Session("id")

Hvad sker der nu?

Logger af nu, og logge først ind i morgen ...
Avatar billede karstenl Nybegynder
16. november 2005 - 05:18 #22
Så får jeg denne:
---------------------------------------------------------------
Persits.Upload.1 error '800a001c'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement.

/firmamappe/ubc/linkmaps/upload_pic_save.asp, line 21
---------------------------------------------------------------
Linie 21: File.ToDatabase Connect, SQL
---------------------------------------------------------------
Lige en opsummering på hvordan scriptet ser ud nu:

<%
Set Upload = Server.CreateObject("Persits.Upload")
Upload.Save "c:\webs\talkactive\webxxx\xxx.dk\Upload"

Set File = Upload.Files("THEFILE")

If Not File Is Nothing Then

  Connect = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../../../db/ubc/ubc_db.mdb")

  SQL = "UPDATE tbl_linksMaps SET filename ='" & File.Filename & "', image_beskrivelse='" & Replace(Upload.Form("image_beskrivelse"), "'", "''") & "', " & File.Size & ") WHERE ID=" & Session("id")


  File.ToDatabase Connect, SQL
  Response.Write "File saved."
Else
  Response.Write "File not selected."
End If
%>
Avatar billede softspot Forsker
16. november 2005 - 10:20 #23
Hvordan ser din INSERT INTO ud?
Avatar billede karstenl Nybegynder
16. november 2005 - 11:39 #24
Den ser sådan her ud:

SQL = "INSERT INTO tbl_linksMaps(image_blob, image_filename, image_description, image_filesize) VALUES(?, '"
Avatar billede karstenl Nybegynder
16. november 2005 - 11:50 #25
Og for at lige skabe lidt overblik, ser det hele sådan her ud, inden div. rettelser fra "Trekkies" :)

----------------------------------------------------
upload_pic_form.asp

<HTML>
<%
Set cn = Server.CreateObject("ADODB.Connection")
OpenString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("../../../db/ubc/ubc_db.mdb")
cn.Open OpenString

Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open "SELECT * FROM tbl_linkmaps WHERE ID = " & request("ID"), cn
%>

<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="upload_pic_save.asp">

File:<br>
<INPUT TYPE=FILE NAME="THEFILE" size="21"><br>

Beskrivelse:<br>
<textarea NAME="image_description"></textarea>

<br>
<INPUT TYPE=SUBMIT VALUE="Upload!">



<INPUT TYPE=hidden NAME="ip" size="<%=rs("ID")%>">
</FORM>

<%
rs.close
cn.close
%>

</BODY>
</HTML>
----------------------------------------------------

upload_pic_save.asp

<HTML>
<BODY>
<%
Set Upload = Server.CreateObject("Persits.Upload")
Upload.Save "c:\webs\talkactive\webxxxx\xxxxx.dk\Upload"

Set File = Upload.Files("THEFILE")

If Not File Is Nothing Then

  Connect = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../../../db/ubc/ubc_db.mdb")
   
  SQL = "UPDATE MYIMAGES SET img=?, name='newname.ext' WHERE id="
  SQL = SQL & File.Filename & "', '"
  SQL = SQL & Replace(Upload.Form("image_description"), "'", "''") & "', "
  SQL = SQL & File.Size & ")"

  File.ToDatabase Connect, SQL
  Response.Write "File saved."
Else
  Response.Write "File not selected."
End If
%>
</BODY>
</HTML>
----------------------------------------------------
NB:
Jeg skal egentlig ikke bruge INSERT INTO, da jeg skal Uploade billedet til en tilhørende tekst allerede skabt/lavet og som jo så allerede har en ID.
Avatar billede softspot Forsker
16. november 2005 - 11:51 #26
OK, så prøv med denne SQL til update i stedet:

  SQL = "UPDATE tbl_linksMaps SET image_filename ='" & File.Filename & "', image_description='" & Replace(Upload.Form("image_beskrivelse"), "'", "''") & "', image_filesize=" & File.Size & " WHERE ID=" & Session("id")
Avatar billede karstenl Nybegynder
16. november 2005 - 11:52 #27
Ups..

<INPUT TYPE=hidden NAME="ip" size="<%=rs("ID")%>">
er jo self.
<INPUT TYPE=hidden NAME="ip" value="<%=rs("ID")%>">

:)
Avatar billede softspot Forsker
16. november 2005 - 11:56 #28
Hvis det kun er billedets data der skal opdateres, kan du benytte flg. SQL (idet jeg antager at den første parameter bliver udskiftet af persits upload-komponenten):

SQL = "UPDATE tbl_linksMaps SET " & _
    " image_blob = ? " & _
    ",image_filename = '" & File.Filename & "'" & _
    ",image_description = '" & Replace(Upload.Form("image_description"), "'", "''") & "'" & _
    ",image_filesize = '" & File.Size & "'" & _
    "WHERE id = " & session("id")

i stedet for denne blok

  SQL = "UPDATE MYIMAGES SET img=?, name='newname.ext' WHERE id="
  SQL = SQL & File.Filename & "', '"
  SQL = SQL & Replace(Upload.Form("image_description"), "'", "''") & "', "
  SQL = SQL & File.Size & ")"
Avatar billede softspot Forsker
16. november 2005 - 12:01 #29
Måske endda (for at bruge det id der ligger i din form - det hedder da id og ikke ip, ikk'?):

SQL = "UPDATE tbl_linksMaps SET " & _
    " image_blob = ? " & _
    ",image_filename = '" & File.Filename & "'" & _
    ",image_description = '" & Replace(Upload.Form("image_description"), "'", "''") & "'" & _
    ",image_filesize = '" & File.Size & "'" & _
    "WHERE id = " & Upload.Form("id")
Avatar billede karstenl Nybegynder
16. november 2005 - 12:07 #30
Jamen så virker det jo :)

Jeg tror nok at Trekkies egentlig allerede igår kom med det samme svar, hvorfor det ikke virkede der, ved jeg så ikke.

Men softspot læg et svar, så finder jeg lige ud af det med Trekkies.

Tusinde tak for hjælpen, det er kanon at det virker nu :D - tak.
Avatar billede softspot Forsker
16. november 2005 - 12:11 #31
Såvidt jeg lige kan se i de tidligere kommentarer, er der ikke nogen af dem der benytter de korrekte feltnavne, så det er nok derfor det ikke har fungeret...

Men bort set fra det, så velbekomme... :)
Avatar billede softspot Forsker
16. november 2005 - 12:42 #32
Tak for point :)
Avatar billede karstenl Nybegynder
16. november 2005 - 14:33 #33
Det var så lidt ;)
Avatar billede karstenl Nybegynder
21. november 2005 - 18:30 #34
softspot
---------
Af frygt for at du tænker, åh nej ikke ham igen *G*, så spørger jeg lige alligevel ;)

Gider du måske hjælpe mig med dette spm.?
http://www.eksperten.dk/spm/665380

På forhånd tak :)
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