Avatar billede mvk Nybegynder
12. marts 2004 - 11:50 Der er 12 kommentarer og
2 løsninger

http-request opretter ikke record i databasen

når man udfylder formuleren på http://130.228.36.54/DKFront/Front_DK?FrameLink=/ContentPages/_style_ContentPage_1_col_w_teaser_254

..Så foretaes der en server-side http-request til http://www.border-wines.dk/include/starclub.asp?email=em@il.addr
hvor "em@il.addr" er brugerens email-adresse.

MEN der kommer ikke noget i min database. Min kode på starclub.asp er nedenstående, pls help...

koden:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="../Connections/scandlines.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 = ""
%>
<%
' *** Insert Record: set variables

If (CStr(Request("MM_insert")) = "form1") Then

  MM_editConnection = MM_scandlines_STRING
  MM_editTable = "StarClub"
  MM_editRedirectUrl = "../index.asp"
  MM_fieldsStr  = "email|value"
  MM_columnsStr = "Email|',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
%>
<%
' *** Insert Record: construct a sql insert statement and execute it

Dim MM_tableValues
Dim MM_dbValues

If (CStr(Request("MM_insert")) <> "") Then

  ' create the sql insert statement
  MM_tableValues = ""
  MM_dbValues = ""
  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_tableValues = MM_tableValues & ","
      MM_dbValues = MM_dbValues & ","
    End If
    MM_tableValues = MM_tableValues & MM_columns(MM_i)
    MM_dbValues = MM_dbValues & MM_formVal
  Next
  MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"

  If (Not MM_abortEdit) Then
    ' execute the insert
    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
%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body onload="document.forms[0].submit();">
<%mail = Request.Querystring("Email")%>
<form ACTION="<%=MM_editAction%>" METHOD="POST" name="form1">
  <input name="email" type="hidden" id="email" value="<%=mail%>">
  <input type="hidden" name="MM_insert" value="form1">
</form>
</body>
</html>
Avatar billede bojohansen Nybegynder
12. marts 2004 - 12:01 #1
Avatar billede mvk Nybegynder
12. marts 2004 - 12:06 #2
jo den gør <body onload="document.forms[0].submit();"> den dig bare videre lige som siden loades
Avatar billede bojohansen Nybegynder
12. marts 2004 - 12:26 #3
<input name="email" type="hidden" id="email" value="<%=mail%>">

Skal sikkert være

<input name="email" type="hidden" id="email" value="<%=Request.Querystring("Email")%>">

Da den hedder Email i querystringen
Avatar billede bojohansen Nybegynder
12. marts 2004 - 12:30 #4
Åh det har du jo defineret et par linier længere oppe.........
Avatar billede bojohansen Nybegynder
12. marts 2004 - 12:34 #5
Jeg kan ikke se en eneste fejl i DW's insert behavior.
Prøv evt at fjerne
<body onload="document.forms[0].submit();">

og læg en submit knap, bare for at teste om det fungere
Avatar billede mvk Nybegynder
12. marts 2004 - 13:16 #6
http://www.border-wines.dk/include/starclub.asp?email=test@email.dk
virker. den smider emailen i databasen

jeg tror fejlen opstår i forbindelse med den der server-side http-request. den smider email videre, men når siden at blive loaded ? så onload="document.forms[0].submit();" bliver sat i gang ?
Avatar billede bojohansen Nybegynder
12. marts 2004 - 15:43 #7
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="../Connections/scandlines.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 = ""
%>
<%
' *** Insert Record: set variables

If (CStr(Request("MM_insert")) = "form1") Then

  MM_editConnection = MM_scandlines_STRING
  MM_editTable = "StarClub"
  MM_editRedirectUrl = "../index.asp?" & Server.HTMLEncode(Request.QueryString)
  MM_fieldsStr  = "email|value"
  MM_columnsStr = "Email|',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
%>
<%
' *** Insert Record: construct a sql insert statement and execute it

Dim MM_tableValues
Dim MM_dbValues

If (CStr(Request("MM_insert")) <> "") Then

  ' create the sql insert statement
  MM_tableValues = ""
  MM_dbValues = ""
  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_tableValues = MM_tableValues & ","
      MM_dbValues = MM_dbValues & ","
    End If
    MM_tableValues = MM_tableValues & MM_columns(MM_i)
    MM_dbValues = MM_dbValues & MM_formVal
  Next
  MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"

  If (Not MM_abortEdit) Then
    ' execute the insert
    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
%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body onload="document.forms[0].submit();">
<%mail = Request.Querystring("Email")%>
<form ACTION="<%=MM_editAction%>" METHOD="POST" name="form1">
  <input name="email" type="hidden" id="email" value="<%=mail%>">
  <input type="hidden" name="MM_insert" value="form1">
</form>
</body>
</html>

Prøv lige at lægge denne kode op og lad mig se siden
Avatar billede mvk Nybegynder
16. marts 2004 - 09:13 #8
Avatar billede mvk Nybegynder
16. marts 2004 - 09:19 #9
test side for formularen der skal sendes til min side:
Hvis du taster information ind på http://130.228.36.54/DKFront/Front_DK?FrameLink=/ContentPages/_style_ContentPage_1_col_w_teaser_254

seneste mail fra ham der har sat formularen op:
Hej, Michael.

Jeg har fikset en fejl hos mig, jeg resolvet ikke variablene korrekt, og sendte derfor kun in "<$client.form.email>" som email-adresse.

Men, legg også mærke til, at dette kun er en simpel http-request, jeg hverken leser eller parser, hvad jeg får tilbage som respons.

..Så java-scriptet på siden bliver hellere ikke parset og udført. Jeg ser her, at javascriptet forsøger at POST'e emailadressen tilbage til samme side.


Jeg har nu midlertidig ændret siden til å vise hvilken URL den går til, samt responsen den modtager.

Eksempel på URL og respons:
URL: http://www.border-wines.dk/include/starclub.asp?email=trond.roaas@creuna.dk

Respons:
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head>

<body onload="document.forms[0].submit();">

<form ACTION="/include/starclub.asp?email=trond.roaas@creuna.dk" METHOD="POST" name="form1">
  <input name="email" type="hidden" id="email" value="trond.roaas@creuna.dk">
  <input type="hidden" name="MM_insert" value="form1">
</form>
</body>
</html>




Kan du lige teste igen?


Mvh.
Trond Roaas
Avatar billede bojohansen Nybegynder
16. marts 2004 - 09:24 #10
<body onload="document.forms[0].submit();">

Det kan kun være den som laver ged i den, prøv lige at gå over til

http://www.eksperten.dk/spm/Programmering/Script/JavaScript/

og spørg om den evt. loader formen inden der kommer noget data i den fra querystringen.

Der er ikke fejl i .asp koden.
Avatar billede mvk Nybegynder
16. marts 2004 - 09:33 #11
ok - vender tilbage senere
Avatar billede mvk Nybegynder
30. marts 2004 - 12:08 #12
jeg fik det til at virke - al koden var rigtig
Avatar billede mvk Nybegynder
30. marts 2004 - 12:09 #13
han sendte dem bare ikke rigtigt afsted...
Avatar billede bojohansen Nybegynder
31. marts 2004 - 02:55 #14
Ja jeg kunne da heller ikke forstå at der skulle være noget forkert med koden.....

Tak for Points ;-)
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