Jag har en sida där jag vill uppdatera ett fält i en specifik post automatiskt när sidan laddas - därefter vill jag direkt gå till nästa sida.
Koden är genererad i Dreamweaver MX 2004 - där den är mycket komplex...
...hur kan man med "handkodning" göra detta på ett snyggare sätt?
Jag vill inte behöva "submit":a ett formulär - sidan skall bara "köras" och sedan transportera användaren vidare till en annan sida med "numberID" satt till samma som på denna sidan.
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="Connections/connPF.asp" -->
<%
' *** Edit Operations: declare variables
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
MM_editConnection = MM_connPF_STRING
MM_editTable = "TabPersMess"
MM_editColumn = "numberID"
MM_recordId = "" + Request.Form("MM_recordId") + ""
MM_editRedirectUrl = "personal_message_read.asp"
MM_fieldsStr = "persmessread|value"
MM_columnsStr = "PersMessRead|',none,''"
' 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 rsUpdateread__MMColParam
rsUpdateread__MMColParam = "1"
If (Request.QueryString("numberID") <> "") Then
rsUpdateread__MMColParam = Request.QueryString("numberID")
End If
%>
<%
Dim rsUpdateread
Dim rsUpdateread_numRows
Set rsUpdateread = Server.CreateObject("ADODB.Recordset")
rsUpdateread.ActiveConnection = MM_connPF_STRING
rsUpdateread.Source = "SELECT numberID, PersMessRead FROM TabPersMess WHERE numberID = " + Replace(rsUpdateread__MMColParam, "'", "''") + ""
rsUpdateread.CursorType = 0
rsUpdateread.CursorLocation = 2
rsUpdateread.LockType = 1
rsUpdateread.Open()
rsUpdateread_numRows = 0
%>
<%=(rsUpdateread.Fields.Item("numberID").Value)%>
<%=(rsUpdateread.Fields.Item("PersMessRead").Value)%>
<form name="form1" method="POST" action="<%=MM_editAction%>">
<input name="numberID" type="hidden" id="numberID" value="<%=(rsUpdateread.Fields.Item("numberID").Value)%>">
<input name="persmessread" type="hidden" id="persmessread" value="ja">
<input type="submit" name="Submit" value="Submit">
<input type="hidden" name="MM_update" value="form1">
<input type="hidden" name="MM_recordId" value="<%= rsUpdateread.Fields.Item("numberID").Value %>">
</form>
<%
rsUpdateread.Close()
Set rsUpdateread = Nothing
%>
Ni ser själva hur "bökig" koden blir...
...när man kommer till sidan så har man med sig en url som innehåller "numberID" - nyckeln för ett meddelande.
Sedan skall fältet "persmessread" (för den specifika posten) updateras från "nej" till "ja".
Slutligen skall man transporteras till en tredje sida tillsammans med en urlvariabel "numberID" satt till den ursprungliga...