Ordre oprettes 2 gange
jeg har lavet en shop som virker fint, men jeg har oplevet at hvis 2 ordre ligges indenfor 1 minut kan de risikere at få tildelt samme ordrenummer. hvordan kan det lade sig gøre ?dette er koden til min opret_ordre_script.asp er der nogen måde at sikre sig at kunderne får hver sit ordrenummer selvom filen kaldes flere gange indenfor få sekunder/kort tid ?
koden:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="../../Connections/database.asp" -->
<% Session.LCID = 1030 %>
<%
' *** 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")) = "ordre") Then
MM_editConnection = MM_database_STRING
MM_editTable = "ordrer"
MM_editRedirectUrl = "ordre_kundescript.asp"
MM_fieldsStr = "sessionID|value|kundeID|value|Status|value|Dato|value|Tid|value|Beloeb|value|Betalingsform|value|Destination|value|Fragt|value"
MM_columnsStr = "sessionID|none,none,NULL|kundeID|none,none,NULL|Status|',none,''|Dato|',none,''|Tid|',none,''|Beloeb|',none,''|Betalingsform|',none,''|Destination|',none,''|Fragt|',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
%>
<%
Dim rsIndkobskurv__MMColParam
rsIndkobskurv__MMColParam = Session.SessionID
%>
<%
Dim rsIndkobskurv
Dim rsIndkobskurv_numRows
Set rsIndkobskurv = Server.CreateObject("ADODB.Recordset")
rsIndkobskurv.ActiveConnection = MM_database_STRING
rsIndkobskurv.Source = "SELECT * FROM indkoebskurv WHERE sessionID = " + Replace(rsIndkobskurv__MMColParam, "'", "''") + ""
rsIndkobskurv.CursorType = 0
rsIndkobskurv.CursorLocation = 2
rsIndkobskurv.LockType = 1
rsIndkobskurv.Open()
rsIndkobskurv_numRows = 0
%>
<%
Dim rsKunde__MMColParam
rsKunde__MMColParam = Session.SessionID
%>
<%
Dim rsKunde
Dim rsKunde_numRows
Set rsKunde = Server.CreateObject("ADODB.Recordset")
rsKunde.ActiveConnection = MM_database_STRING
rsKunde.Source = "SELECT * FROM kunder WHERE LastSession = '" + Replace(rsKunde__MMColParam, "'", "''") + "'"
rsKunde.CursorType = 0
rsKunde.CursorLocation = 2
rsKunde.LockType = 1
rsKunde.Open()
rsKunde_numRows = 0
%>
<%
Dim rsLevering__MMColParam
rsLevering__MMColParam = Session.SessionID
%>
<%
Dim rsLevering
Dim rsLevering_numRows
Set rsLevering = Server.CreateObject("ADODB.Recordset")
rsLevering.ActiveConnection = MM_database_STRING
rsLevering.Source = "SELECT * FROM levering WHERE sessionID = '" + Replace(rsLevering__MMColParam, "'", "''") + "'"
rsLevering.CursorType = 0
rsLevering.CursorLocation = 2
rsLevering.LockType = 1
rsLevering.Open()
rsLevering_numRows = 0
%>
<%
Dim rsFragt__MMColParam
rsFragt__MMColParam = Session.SessionID
%>
<%
Dim rsFragt
Dim rsFragt_numRows
Set rsFragt = Server.CreateObject("ADODB.Recordset")
rsFragt.ActiveConnection = MM_database_STRING
rsFragt.Source = "SELECT * FROM levering WHERE sessionID = '" + Replace(rsFragt__MMColParam, "'", "''") + "' ORDER BY IDlevering DESC"
rsFragt.CursorType = 0
rsFragt.CursorLocation = 2
rsFragt.LockType = 1
rsFragt.Open()
rsFragt_numRows = 0
%>
<%
Dim rsTotalPris__MMColParam
rsTotalPris__MMColParam = Session.SessionID
%>
<%
Dim rsTotalPris
Dim rsTotalPris_numRows
Set rsTotalPris = Server.CreateObject("ADODB.Recordset")
rsTotalPris.ActiveConnection = MM_database_STRING
rsTotalPris.Source = "SELECT * FROM indkoebskurv WHERE sessionID = " + Replace(rsTotalPris__MMColParam, "'", "''") + ""
rsTotalPris.CursorType = 0
rsTotalPris.CursorLocation = 2
rsTotalPris.LockType = 1
rsTotalPris.Open()
rsTotalPris_numRows = 0
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<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="<%=MM_editAction%>" METHOD="POST" name="ordre" id="ordre"><input name="sessionID" type="hidden" id="sessionID" value="<%=Session.SessionID%>">
<input name="kundeID" type="hidden" id="kundeID" value="<%=(rsKunde.Fields.Item("IDkunde").Value)%>">
<input name="Status" type="hidden" id="Status" value="Ny">
<input name="Dato" type="hidden" id="Dato" value="<%=Date()%>">
<input name="Tid" type="hidden" id="Tid" value="<%=Time()%>">
<input name="Beloeb" type="hidden" id="Beloeb" value="<%
If ((rsFragt.Fields.Item("Levering").Value)="Danmark") OR ((rsFragt.Fields.Item("Levering").Value)="Europa - Express") OR ((rsFragt.Fields.Item("Levering").Value)="Europa - Budget") Then
resul = 0
do while not rsTotalPris.EOF
mellemresultat = (cdbl(rsTotalPris("Pris")))*(cdbl(rsTotalPris("Antal")))
resul = resul + mellemresultat
rsTotalPris.Movenext
loop
response.write Formatnumber(resul+(rsFragt.Fields.Item("Fragt").Value),2)
Else
resul = 0
do while not rsTotalPris.EOF
mellemresultat = (cdbl(rsTotalPris("Pris")))*(cdbl(rsTotalPris("Antal")))
resul = resul + mellemresultat
rsTotalPris.Movenext
loop
response.write Formatnumber(((resul*0.8)+rsFragt("Fragt")),2)
End if
%>">
<input name="Betalingsform" type="hidden" id="Betalingsform" value="<%=Request.QueryString("Betalingsform")%>">
<input name="Destination" type="hidden" id="Destination" value="<%=(rsLevering.Fields.Item("Levering").Value)%>">
<input name="Fragt" type="hidden" id="Fragt" value="<%=(rsLevering.Fields.Item("Fragt").Value)%>">
<input type="hidden" name="MM_insert" value="ordre">
</form>
</body>
</html>
<%
rsIndkobskurv.Close()
Set rsIndkobskurv = Nothing
%>
<%
rsKunde.Close()
Set rsKunde = Nothing
%>
<%
rsLevering.Close()
Set rsLevering = Nothing
%>
<%
rsFragt.Close()
Set rsFragt = Nothing
%>
<%
rsTotalPris.Close()
Set rsTotalPris = Nothing
%>
