Du får helt enkelt lagra dag och tid i stället för enbart dag för bokad sal i databasen. Sen kollar du om den aktuella salen är ledig vid på den dag och tid någon vill boka salen.
Detta är för schemaläggning utav ett arrangemang. Läs nederst så förklarar jag mer
<%
IF Request.QueryString("action") = "" Then
IF Request.QueryString("fel") <> "" Then
Response.Write("<div style=""color:#ff0000;"">"& Request.QueryString("fel") &"</div>")
End IF
%>
<form action="test.asp?action=verify" method="post">
<select name="frmDay"> <option selected value="">Välj vilken dag</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <br /><br />
<select name="frmSal"> <option selected value="">Välj Sal</option> <option value="A3">A3</option> <option value="A5">A5</option> </select> <br /><br />
<select name="frmStart">
<option selected value="">Välj vilken timme Eventet ska sluta</option>
<script language="JavaScript">
for (var i = 0; i <24; i++) {
for (var k = 1; k <= 2; k++) {
if (k == 2) {
h = 30;
} else {
h = "00";
}
document.write("<option value='"+ i +":"+ h +"'>"+ i +":"+ h +"</option>")
}
}
</script>
</select>
<select name="frmEnd">
<option selected value="">Välj vilken timme Eventet ska sluta</option>
<script language="JavaScript">
for (var a = 0; a < 24; a++) {
for (var w = 1; w <= 2; w++) {
if (w ==1) {
document.write("<option value='"+ a +":00'>"+a+":00 </option>")
continue;
} else {
document.write("<option value='"+ a +":30'>"+a+":30 </option>")
}
}
}
</script>
</select><br /><br />
<input type="Submit" name="btnSubmit" value="Spara event" />
</form>
<%
ElseIF Request.QueryString("action") = "verify" Then
' Veriefiera uppgifter om arrangemanget
dtmStart = Request.Form("frmStart")
dtmEnd = Request.Form("frmEnd")
intDag = Request.Form("frmDay")
strSal = Request.Form("FrmSal")
' Gör följande kollar:
IF isDate(cDate(dtmStart)) = False or isDate(cDate(dtmEnd)) = False Then
' Om Datumet är ett giltligt datum
Response.Redirect("test.asp?fel=Inkorrekt datumformat, gör om")
ElseIF dtmStart > dtmEnd Then
' Om personen har valt att göra Starttiden efter det att evenemanget slutat
Response.Redirect("test.asp?fel=Arrangemanget kan inte börja efter det att det slutat, ändra")
ElseIF DateDiff("n", dtmStart, dtmEnd) < 90 Then
' Om Arrangemanget är kortare än 90 minuter (1,5 timme)
Response.Redirect("test.asp?fel=Arrangemanget är alldeles för kort, minst 90 minuter")
ElseIF intDag = "" or cInt(intDag) = False or cInt(intDag) < 1 AND cInt(intDag) > 3 Then
' Kontollera att personen har matat in korrekt dag
Response.Redirect("test.asp?fel=Inkorrekt dag")
ElseIF strSal = "" Then
' Kontollera att personen har matat in korrekt sal
Response.Redirect("test.asp?fel=Felaktig sal")
End IF
' Kontroll klar
dtmStart = cDate(dtmStart)
dtmEnd = cDate(dtmEnd)
intDag = cInt(intDag)
' Kontroll visa för användaren så att personen får en koll på vad personen vill
Response.Write("Dag: "& intDag &"<br />")
Response.Write("Sal: "& strSal &"<br />")
Response.Write("Arrangemanget startar: "& dtmStart &"<br />")
Response.Write("Arrangemanget avslutas: "& dtmEnd &"")
Response.Write("<form action=""test.asp?action=confirmed"" method=""post"" name=""verification"">")
Response.Write("<input type=""hidden"" name=""frmDag"" value="""& intDag &""" />")
Response.Write("<input type=""hidden"" name=""frmSal"" value="""& strSal &""" />")
Response.Write("<input type=""hidden"" name=""frmStart"" value="""& dtmStart &""" />")
Response.Write("<input type=""hidden"" name=""frmEnd"" value="""& dtmEnd &""" />")
Response.Write("<a href=""javascript: document.verification.submit();"">Acceptera</a>")
Response.Write("</form>")
ElseIF Request.QueryString("action") = "confirmed" Then
dtmStart = Request.Form("frmStart")
dtmEnd = Request.Form("frmEnd")
intDag = Request.Form("frmDag")
strSal = Request.Form("FrmSal")
IF dtmStart = "" or dtmEnd = "" or intDag = "" or strSal = "" Then
Response.Redirect ("test.asp?Säkerhetssystemet upptäckte att du försökte fuska dig igenom, gör det ordentligt denna gång")
End IF
' Kontrollerar så att det inte redan finns ett arrangemang på samma tid, om det finns, skicka tillbaka användaren
Set rsChkEvent = Server.CreateObject("ADODB.Recordset")
Set rsChkEvent = objdbConnection.Execute ("SELECT ID, SAL, Day, TimeStart, TimeEnd FROM tbl_schedualtime WHERE Day = '"& intDag &"' AND SAL = '"& strSal &"'") ' Behöver jag hjälp med "in between mojjen"
IF rsChkEvent.EOF Then
objdbConnection.Execute ("INSERT INTO tbl_schedualtime (SAL, Day, TimeStart, TimeEnd) VALUES ('"& strSal &"', "& intDag &", '"& dtmStart &"', '"& dtmEnd &"')")
Else
Response.Redirect ("test.asp?Finns redan ett evenemang under den tiden")
End IF
rsChkEvent.Close
Set rsChkEvent = Nothing
End IF
%>
När man schemalägger vill man ju gärna ha starttid, sluttid, dag och vilken sal det gäller.
Att hitta salen, och dagen är inga problem men jag vill även förhindra att man lägger in en aktivitet i samma sal mellan tiden som den tidgare akiviten.
exempel;
Vid klockan X startar ett evenemang i sal A4 och slutar vid klockan Y. Men om någon annan vill ha arrangera i samma sal (A4) så råkar personen ändå trycka på tiden x + (låt oss säga 1 timme) vilket betyder att salen blir dubbelbokad...
Jag gissar på att man ska använda 'in between' men är inte säker, någon kan och vill hjälpa till?

