The trigger for the insert is if the recordset is empty. the recordset is filtered on the email address from element, so the recordset will be empty any tinme this page is accessed directly:
<%
' WA Application Builder Insert
if ((rsCheckUsername.EOF AND rsCheckUsername.BOF)) then
WA_connection = MM_dmballoo_sql_STRING
WA_table = "dbo.userdetails"
WA_sessionName = "userdetails_id"
WA_redirectURL = ""
WA_keepQueryString = false
WA_indexField = "id"
WA_fieldNamesStr = "firstname|surname|emailaddress|password|telephonenumber|discount|newsletter|language|active"
WA_fieldValuesStr = "" & cStr(cStr(Request.Form("firstname"))) & "" & "|" & "" & cStr(cStr(Request.Form("surname"))) & "" & "|" & "" & cStr(cStr(Request.Form("emailaddress"))) & "" & "|" & "" & cStr(cStr(Request.Form("password"))) & "" & "|" & "" & cStr(cStr(Request.Form("telephonenumber"))) & "" & "|" & "" & cStr(cStr(Request.Form("discount"))) & "" & "|" & "Yes" & "|" & "German" & "|" & "No"
WA_columnTypesStr = "',none,''|',none,''|',none,''|',none,''|',none,''|none,none,NULL|',none,''|',none,''|',none,''"
WA_comparisonStr = " LIKE | LIKE | LIKE | LIKE | LIKE | = | LIKE | LIKE | LIKE "
WA_fieldNames = Split(WA_fieldNamesStr,"|")
WA_fieldValues = Split(WA_fieldValuesStr,"|")
WA_columns = Split(WA_columnTypesStr,"|")
WA_comparisions = Split(WA_comparisonStr, "|")
insertParamsObj = WA_AB_generateInsertParams(WA_fieldNames, WA_columns, WA_fieldValues, -1)
set MM_editCmd = Server.CreateObject("ADODB.Command")
MM_editCmd.ActiveConnection = WA_connection
MM_editCmd.CommandText = "INSERT INTO " & WA_table & " (" & insertParamsObj(1) & ") VALUES (" & insertParamsObj(2) & ")"
MM_editCmd.Execute()
MM_editCmd.ActiveConnection.Close()
obj = WA_AB_generateWhereClause(WA_fieldNames, WA_columns, WA_fieldValues, WA_comparisions)
sqlstr = "SELECT " & WA_indexField & " FROM " & WA_table & " WHERE " & obj & " ORDER BY " & WA_indexField & " DESC"
set WA_AppBuilderRecordset = Server.CreateObject("ADODB.Recordset")
WA_AppBuilderRecordset.ActiveConnection = WA_connection
WA_AppBuilderRecordset.Source = sqlstr
WA_AppBuilderRecordset.CursorType = 0
WA_AppBuilderRecordset.CursorLocation = 2
WA_AppBuilderRecordset.LockType = 1
WA_AppBuilderRecordset.Open()
if (NOT WA_AppBuilderRecordset.EOF) then Session(WA_sessionName) = WA_AppBuilderRecordset.Fields.Item(WA_indexField).Value
WA_AppBuilderRecordset.Close()
if (WA_redirectURL <> "") then
if (WA_keepQueryString AND Request.QueryString <> "" AND Request.QueryString.Count > 0) then
if (inStr(WA_redirectURL,"?") > 0) then
WA_redirectURL = WA_redirectURL & "&"
else
WA_redirectURL = WA_redirectURL & "?"
end if
WA_redirectURL = WA_redirectURL & Request.QueryString
end if
Response.Redirect(WA_redirectURL)
end if
end if
%>
Add another If around the insert so the insert will only occur if an email address was posted to the page, and it was not found in the database:
<% If (Request.Form("emailaddress") <> "") Then %>
<%
' WA Application Builder Insert
if ((rsCheckUsername.EOF AND rsCheckUsername.BOF)) then
WA_connection = MM_dmballoo_sql_STRING
WA_table = "dbo.userdetails"
WA_sessionName = "userdetails_id"
WA_redirectURL = ""
WA_keepQueryString = false
WA_indexField = "id"
WA_fieldNamesStr = "firstname|surname|emailaddress|password|telephonenumber|discount|newsletter|language|active"
WA_fieldValuesStr = "" & cStr(cStr(Request.Form("firstname"))) & "" & "|" & "" & cStr(cStr(Request.Form("surname"))) & "" & "|" & "" & cStr(cStr(Request.Form("emailaddress"))) & "" & "|" & "" & cStr(cStr(Request.Form("password"))) & "" & "|" & "" & cStr(cStr(Request.Form("telephonenumber"))) & "" & "|" & "" & cStr(cStr(Request.Form("discount"))) & "" & "|" & "Yes" & "|" & "German" & "|" & "No"
WA_columnTypesStr = "',none,''|',none,''|',none,''|',none,''|',none,''|none,none,NULL|',none,''|',none,''|',none,''"
WA_comparisonStr = " LIKE | LIKE | LIKE | LIKE | LIKE | = | LIKE | LIKE | LIKE "
WA_fieldNames = Split(WA_fieldNamesStr,"|")
WA_fieldValues = Split(WA_fieldValuesStr,"|")
WA_columns = Split(WA_columnTypesStr,"|")
WA_comparisions = Split(WA_comparisonStr, "|")
insertParamsObj = WA_AB_generateInsertParams(WA_fieldNames, WA_columns, WA_fieldValues, -1)
set MM_editCmd = Server.CreateObject("ADODB.Command")
MM_editCmd.ActiveConnection = WA_connection
MM_editCmd.CommandText = "INSERT INTO " & WA_table & " (" & insertParamsObj(1) & ") VALUES (" & insertParamsObj(2) & ")"
MM_editCmd.Execute()
MM_editCmd.ActiveConnection.Close()
obj = WA_AB_generateWhereClause(WA_fieldNames, WA_columns, WA_fieldValues, WA_comparisions)
sqlstr = "SELECT " & WA_indexField & " FROM " & WA_table & " WHERE " & obj & " ORDER BY " & WA_indexField & " DESC"
set WA_AppBuilderRecordset = Server.CreateObject("ADODB.Recordset")
WA_AppBuilderRecordset.ActiveConnection = WA_connection
WA_AppBuilderRecordset.Source = sqlstr
WA_AppBuilderRecordset.CursorType = 0
WA_AppBuilderRecordset.CursorLocation = 2
WA_AppBuilderRecordset.LockType = 1
WA_AppBuilderRecordset.Open()
if (NOT WA_AppBuilderRecordset.EOF) then Session(WA_sessionName) = WA_AppBuilderRecordset.Fields.Item(WA_indexField).Value
WA_AppBuilderRecordset.Close()
if (WA_redirectURL <> "") then
if (WA_keepQueryString AND Request.QueryString <> "" AND Request.QueryString.Count > 0) then
if (inStr(WA_redirectURL,"?") > 0) then
WA_redirectURL = WA_redirectURL & "&"
else
WA_redirectURL = WA_redirectURL & "?"
end if
WA_redirectURL = WA_redirectURL & Request.QueryString
end if
Response.Redirect(WA_redirectURL)
end if
end if
%>
<% End If %>