14. februar 2005 - 17:15Der er
31 kommentarer og 1 løsning
Opdatere post der indeholder bl.a. et billede
Har en tabel (nyheder) der indeholder nogle tekstfelter og så et felt FILE1, der henviser til et billede. Min insert form virker fint, men har lidt problemer med UPDATE formen. Den skal bestå af fire sider:
1. Master page med alle nyheder, der linker til detail side med opdateringsform 2. Detailside med opdateringsform der opdaterer "overskrift, indhold, forfatter" Når man klikker på knappen Opdater, opdateres de pågældende felter og man sendes videre til næste side. 3. Her ligger en AspSmartUpload-form der uploader billeder og sætter strengen ind i feltet på en post (bruger dog et modul der er beregnet til oprettelse af nye poster) 4. Selve motoren der uploader billedet og indsætter data i felt.
Problemet er at jeg ikke ved om dette overhovedet kan lade sig gøre.
Ved ikke om jeg får ført id'et fra detail siden (2) med over til (3) og ved heller ikke om selve motoren (4) er sat korrekt op.
Jeg poster gerne koderne hvis det er nødvendigt...
*****************(side 2)***************** <% ' *** Update Record: construct a sql update statement and execute it
If (CStr(Request("MM_update")) <> "" And CStr(Request("MM_recordId")) <> "") Then
' create the sql update statement MM_editQuery = "update " & MM_editTable & " set " For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2 MM_formVal = MM_fields(MM_i+1) MM_typeArray = Split(MM_columns(MM_i+1),",") MM_delim = MM_typeArray(0) If (MM_delim = "none") Then MM_delim = "" MM_altVal = MM_typeArray(1) If (MM_altVal = "none") Then MM_altVal = "" MM_emptyVal = MM_typeArray(2) If (MM_emptyVal = "none") Then MM_emptyVal = "" If (MM_formVal = "") Then MM_formVal = MM_emptyVal Else If (MM_altVal <> "") Then MM_formVal = MM_altVal ElseIf (MM_delim = "'") Then ' escape quotes MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'" Else MM_formVal = MM_delim + MM_formVal + MM_delim End If End If If (MM_i <> LBound(MM_fields)) Then MM_editQuery = MM_editQuery & "," End If MM_editQuery = MM_editQuery & MM_columns(MM_i) & " = " & MM_formVal Next MM_editQuery = MM_editQuery & " where " & MM_editColumn & " = " & MM_recordId
If (Not MM_abortEdit) Then ' execute the update Set MM_editCmd = Server.CreateObject("ADODB.Command") MM_editCmd.ActiveConnection = MM_editConnection MM_editCmd.CommandText = MM_editQuery MM_editCmd.Execute MM_editCmd.ActiveConnection.Close
If (MM_editRedirectUrl <> "") Then Response.Redirect(MM_editRedirectUrl) End If End If
End If %> <% Dim RSnyheder__MMColParam RSnyheder__MMColParam = "1" If (Request.QueryString("id") <> "") Then RSnyheder__MMColParam = Request.QueryString("id") End If %> <% Dim RSnyheder Dim RSnyheder_numRows
Set RSnyheder = Server.CreateObject("ADODB.Recordset") RSnyheder.ActiveConnection = MM_connsydvest_STRING RSnyheder.Source = "SELECT TOP 1 * FROM nyheder WHERE id = " + Replace(RSnyheder__MMColParam, "'", "''") + " ORDER BY id DESC" RSnyheder.CursorType = 0 RSnyheder.CursorLocation = 2 RSnyheder.LockType = 3 RSnyheder.Open()
*****************Side 3***************** <% Dim RSnyheder__MMColParam RSnyheder__MMColParam = "1" If (Request.QueryString("id") <> "") Then RSnyheder__MMColParam = Request.QueryString("id") End If %> <% Dim Repeat1__numRows Dim Repeat1__index
Repeat1__numRows = 5 Repeat1__index = 0 RSnyhedsoversigt_numRows = RSnyhedsoversigt_numRows + Repeat1__numRows %> <% Dim MM_paramName %> <% ' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters
Dim MM_keepNone Dim MM_keepURL Dim MM_keepForm Dim MM_keepBoth
Dim MM_removeList Dim MM_item Dim MM_nextItem
' create the list of parameters which should not be maintained MM_removeList = "&index=" If (MM_paramName <> "") Then MM_removeList = MM_removeList & "&" & MM_paramName & "=" End If
' add the URL parameters to the MM_keepURL string For Each MM_item In Request.QueryString MM_nextItem = "&" & MM_item & "=" If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then MM_keepURL = MM_keepURL & MM_nextItem & Server.URLencode(Request.QueryString(MM_item)) End If Next
' add the Form variables to the MM_keepForm string For Each MM_item In Request.Form MM_nextItem = "&" & MM_item & "=" If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then MM_keepForm = MM_keepForm & MM_nextItem & Server.URLencode(Request.Form(MM_item)) End If Next
' create the Form + URL string and remove the intial '&' from each of the strings MM_keepBoth = MM_keepURL & MM_keepForm If (MM_keepBoth <> "") Then MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1) End If If (MM_keepURL <> "") Then MM_keepURL = Right(MM_keepURL, Len(MM_keepURL) - 1) End If If (MM_keepForm <> "") Then MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1) End If
' a utility function used for adding additional parameters to these strings Function MM_joinChar(firstItem) If (firstItem <> "") Then MM_joinChar = "&" Else MM_joinChar = "" End If End Function %>
<% Response.Buffer = True %> <html> <title>Indsætte data i databasen</title> <head> </head> <body> <% Dim RSnyheder__MMColParam RSnyheder__MMColParam = "1" If (Request.QueryString("id") <> "") Then RSnyheder__MMColParam = Request.QueryString("id") End If %> <% ' Variables ' ********* Dim mySmartUpload Dim file Dim intCount intCount=0
' Object creation ' *************** Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
' Upload ' ****** mySmartUpload.Upload
' Select each file ' **************** For each file In mySmartUpload.Files ' Only if the file exist ' ********************** If not file.IsMissing Then ' Save the files with his original names in a virtual path of the web server ' ****************************************************************************
file.SaveAs("images/nyhederimages/" & file.FileName) ' sample with a physical path 'file.SaveAs("e:\Billeder\" & file.FileName)
' Databaseforbindelse - husk at angive sti til din database Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("db/fcsydvest.mdb") Conn.Open DSN
'Tilføjer brugeren til databasen Set rs = Server.CreateObject("ADODB.Recordset") strSQL = "SELECT FILE1 from nyheder WHERE id = " + Replace(RSnyheder__MMColParam, "'", "''") + "" rs.Open strsql, conn, 1, 3
'Tilføjer brugeren til databasen og sender ham/hende til login siden rs.Addnew rs("FILE1") = "images/nyhederimages/" & file.FileName
rs.update
intCount = intCount + 1
End If ' Display the number of files which could be uploaded ' *************************************************** Response.Write("<BR>" & mySmartUpload.Files.Count & " file(r) kunne blive uploaded.<BR>")
' Display the number of files uploaded ' ************************************ Response.Write(intCount & " file(r) uploaded.<BR>") Next response.Redirect("/intern_ret_nyhed5.asp") %> </body> </html>
Side 2 og 3 har jeg klippet i, så der kun vises de relevante koder. Side 4 er komplet.
For på side to, hvor jeg har min første form ser action således ud: <form method="POST" action="<%=MM_editAction%>" name="form1">
Her er den eneste kode på side 2, der indeholder noget med MM_EditAction:
MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME")) If (Request.QueryString <> "") Then MM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request.QueryString) End If
' boolean to abort record edit MM_abortEdit = false
' query string to execute MM_editQuery = "" %> <% ' *** Update Record: set variables
If (CStr(Request("MM_update")) = "form1" And CStr(Request("MM_recordId")) <> "") Then
' create the MM_fields and MM_columns arrays MM_fields = Split(MM_fieldsStr, "|") MM_columns = Split(MM_columnsStr, "|")
' set the form values For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2 MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i))) Next
' append the query string to the redirect URL If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString Else MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString End If End If
End If %>
Har prøvet at sætte MM_editRedirectUrl = "intern_ret_nyhed3.asp?id=<%=RSnyheder__MMColParam%>"
i den originale linje: MM_editRedirectUrl = "intern_ret_nyhed3.asp"
Men det virker ikke. Får denne fejl:
Microsoft VBScript compilation error '800a0409' Unterminated string constant /intern_ret_nyhed2.asp, line 53 MM_editRedirectUrl = "intern_ret_nyhed3.asp?id=<%=RSnyheder__MMColParam
Andre sider er intern_ret_nyhed1.asp intern_ret_nyhed3.asp intern_ret_nyhed4.asp intern_ret_nyhed5.asp (side 5 er bare en kvittering uden nogen interessant kode)
Ok har ændre editRedirectUrl og nu kommer jeg ihvertfald videre til intern_ret_nyhed3.asp Nu er det så her (side4) den vrøvler.
Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'id = , 41'. /intern_ret_nyhed4.asp, line 53
(ved dog stadig ikke om intern_ret_nyhed3.asp ved at den har modtaget en streng fra side 2)
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <% Dim RSnyheder__MMColParam RSnyheder__MMColParam = "1" If (Request.QueryString("id") <> "") Then RSnyheder__MMColParam = Request.QueryString("id") End If %> <% Dim Repeat1__numRows Dim Repeat1__index
Repeat1__numRows = 5 Repeat1__index = 0 RSnyhedsoversigt_numRows = RSnyhedsoversigt_numRows + Repeat1__numRows %> <% Dim MM_paramName %> <% ' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters
Dim MM_keepNone Dim MM_keepURL Dim MM_keepForm Dim MM_keepBoth
Dim MM_removeList Dim MM_item Dim MM_nextItem
' create the list of parameters which should not be maintained MM_removeList = "&index=" If (MM_paramName <> "") Then MM_removeList = MM_removeList & "&" & MM_paramName & "=" End If
' add the URL parameters to the MM_keepURL string For Each MM_item In Request.QueryString MM_nextItem = "&" & MM_item & "=" If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then MM_keepURL = MM_keepURL & MM_nextItem & Server.URLencode(Request.QueryString(MM_item)) End If Next
' add the Form variables to the MM_keepForm string For Each MM_item In Request.Form MM_nextItem = "&" & MM_item & "=" If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then MM_keepForm = MM_keepForm & MM_nextItem & Server.URLencode(Request.Form(MM_item)) End If Next
' create the Form + URL string and remove the intial '&' from each of the strings MM_keepBoth = MM_keepURL & MM_keepForm If (MM_keepBoth <> "") Then MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1) End If If (MM_keepURL <> "") Then MM_keepURL = Right(MM_keepURL, Len(MM_keepURL) - 1) End If If (MM_keepForm <> "") Then MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1) End If
' a utility function used for adding additional parameters to these strings Function MM_joinChar(firstItem) If (firstItem <> "") Then MM_joinChar = "&" Else MM_joinChar = "" End If End Function %>
Dim MM_editAction Dim MM_abortEdit Dim MM_editQuery Dim MM_editCmd
Dim MM_editConnection Dim MM_editTable Dim MM_editRedirectUrl Dim MM_editColumn Dim MM_recordId
Dim MM_fieldsStr Dim MM_columnsStr Dim MM_fields Dim MM_columns Dim MM_typeArray Dim MM_formVal Dim MM_delim Dim MM_altVal Dim MM_emptyVal Dim MM_i
MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME")) If (Request.QueryString <> "") Then MM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request.QueryString) End If
' boolean to abort record edit MM_abortEdit = false
' query string to execute MM_editQuery = "" %> <% ' *** Update Record: set variables
If (CStr(Request("MM_update")) = "form1" And CStr(Request("MM_recordId")) <> "") Then
' create the MM_fields and MM_columns arrays MM_fields = Split(MM_fieldsStr, "|") MM_columns = Split(MM_columnsStr, "|")
' set the form values For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2 MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i))) Next
' append the query string to the redirect URL If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString Else MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString End If End If
End If %> <% ' *** Update Record: construct a sql update statement and execute it
If (CStr(Request("MM_update")) <> "" And CStr(Request("MM_recordId")) <> "") Then
' create the sql update statement MM_editQuery = "update " & MM_editTable & " set " For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2 MM_formVal = MM_fields(MM_i+1) MM_typeArray = Split(MM_columns(MM_i+1),",") MM_delim = MM_typeArray(0) If (MM_delim = "none") Then MM_delim = "" MM_altVal = MM_typeArray(1) If (MM_altVal = "none") Then MM_altVal = "" MM_emptyVal = MM_typeArray(2) If (MM_emptyVal = "none") Then MM_emptyVal = "" If (MM_formVal = "") Then MM_formVal = MM_emptyVal Else If (MM_altVal <> "") Then MM_formVal = MM_altVal ElseIf (MM_delim = "'") Then ' escape quotes MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'" Else MM_formVal = MM_delim + MM_formVal + MM_delim End If End If If (MM_i <> LBound(MM_fields)) Then MM_editQuery = MM_editQuery & "," End If MM_editQuery = MM_editQuery & MM_columns(MM_i) & " = " & MM_formVal Next MM_editQuery = MM_editQuery & " where " & MM_editColumn & " = " & MM_recordId
If (Not MM_abortEdit) Then ' execute the update Set MM_editCmd = Server.CreateObject("ADODB.Command") MM_editCmd.ActiveConnection = MM_editConnection MM_editCmd.CommandText = MM_editQuery MM_editCmd.Execute MM_editCmd.ActiveConnection.Close
If (MM_editRedirectUrl <> "") Then Response.Redirect(MM_editRedirectUrl) End If End If
End If %> <% Dim RSnyheder__MMColParam RSnyheder__MMColParam = "1" If (Request.QueryString("id") <> "") Then RSnyheder__MMColParam = Request.QueryString("id") End If %> <% Dim RSnyheder Dim RSnyheder_numRows
Set RSnyheder = Server.CreateObject("ADODB.Recordset") RSnyheder.ActiveConnection = MM_connsydvest_STRING RSnyheder.Source = "SELECT TOP 1 * FROM nyheder WHERE id = " + Replace(RSnyheder__MMColParam, "'", "''") + " ORDER BY id DESC" RSnyheder.CursorType = 0 RSnyheder.CursorLocation = 2 RSnyheder.LockType = 3 RSnyheder.Open()
Nu har jeg indsat strengen fra 15/02-2005 15:15:55. Når jeg så fjerner rs.Addnew får jeg denne fejl
ADODB.Recordset error '800a0cc1' Elementet kan ikke findes i den samling, der svarer til det anmodede navn eller ordenstal. /intern_ret_nyhed4.asp, line 56
55 'Tilføjer brugeren til databasen og sender ham/hende til login siden 56 rs("FILE1") = "images/nyhederimages/" & file.FileName 57 58 rs.update 59 60 intCount = intCount + 1 61 62 End If
Har også prøvet at fjerne linje 55-62 men det resulterer også i fejl...
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.