실시간 예약시 중복 예약 방지하는 방법 1
익명
2023.02.27 14:28
2,797
0
본문
실시간 인터넷 예약을 받는 중 같은 시간대 동시에 예약이 되는 낭패를 자주 맞다 보니 아래와 같은 코딩을 작성해 보았다.
물론 근본적인 대안은 될 수 없으나 이것만으로도 작게 나마 나와 같은 고민을 하는 코팅 초보분들을 위해 공유하게 되었다.
<%@ Language=VBScript %>
<%
' 데이터베이스 연결 정보 설정
Dim connectionString
connectionString = "Provider=SQLNCLI11;Data Source=YOUR_SERVER_NAME;Initial Catalog=YOUR_DATABASE_NAME;User ID=YOUR_USERNAME;Password=YOUR_PASSWORD"
' 폼 데이터 추출
Dim userId, startTime, endTime
userId = Request.Form("txtUserId")
startTime = Request.Form("txtStartTime")
endTime = Request.Form("txtEndTime")
' 날짜 형식 변환
startTime = CDate(startTime)
endTime = CDate(endTime)
' 데이터베이스 연결
Dim connection
Set connection = Server.CreateObject("ADODB.Connection")
connection.Open connectionString
' 해당 시간에 이미 예약이 있는지 체크
Dim checkQuery, checkCommand, checkCount
checkQuery = "SELECT COUNT(*) FROM Reservation WHERE StartTime <= ? AND EndTime >= ?"
Set checkCommand = Server.CreateObject("ADODB.Command")
checkCommand.ActiveConnection = connection
checkCommand.CommandText = checkQuery
checkCommand.Parameters.Append checkCommand.CreateParameter("@startTime", adDBTimeStamp, adParamInput, , startTime)
checkCommand.Parameters.Append checkCommand.CreateParameter("@endTime", adDBTimeStamp, adParamInput, , endTime)
Set checkCount = checkCommand.Execute
If checkCount.Fields(0).Value > 0 Then
' 이미 예약이 있으므로 예외 처리
Response.Write("이미 예약이 잡혀있습니다.")
Response.End
End If
checkCount.Close
Set checkCount = Nothing
Set checkCommand = Nothing
' 예약 정보 입력
Dim insertQuery, insertCommand
insertQuery = "INSERT INTO Reservation (UserId, StartTime, EndTime) VALUES (?, ?, ?)"
Set insertCommand = Server.CreateObject("ADODB.Command")
insertCommand.ActiveConnection = connection
insertCommand.CommandText = insertQuery
insertCommand.Parameters.Append insertCommand.CreateParameter("@userId", adInteger, adParamInput, , userId)
insertCommand.Parameters.Append insertCommand.CreateParameter("@startTime", adDBTimeStamp, adParamInput, , startTime)
insertCommand.Parameters.Append insertCommand.CreateParameter("@endTime", adDBTimeStamp, adParamInput, , endTime)
insertCommand.Execute
Set insertCommand = Nothing
' 데이터베이스 연결 종료
connection.Close
Set connection = Nothing
Response.Write("예약이 완료되었습니다.")
%>
댓글목록 0