Mycket tankvärt, faktiskt. Och visst hade det blivit nåt enormt enklare att bara kolla av hela dagar.
Dessvärre handlar det alltså om att faktiskt hyra ut per timme, jag postar koden igen med smärre kommentarförändringar så klarnar det nog för er lite:
[b]' Datum att använda som exempel, dessa är dock dynamiska
' Detta är alltså tidsrymden då det går att boka rum(men) Ingen färdig bokning.
dtmConventionStart = cDate("2010-02-26 12:00:00")
dtmConventionStop = cDate("2010-02-28 14:00:00")
' Detta är en dummybokning som hämtas från tabellen booking
BookingStart = cDate("2010-02-26 14:00:00")
BookingStop = cDate("2010-02-26 19:00:00")
BookingRoomID = 1
BookingEventID = 12
[/b]
Dim intNDays, dtmCurrentDate
intNDays = DateDiff("d",dtmConventionStart, dtmConventionStop)
dtmCurrentDay = dtmConventionStart
Dim rowId, bookingUnit
rowId = 0
DO WHILE dtmCurrentDay >= dtmConventionStart AND dtmCurrentDay <= dtmConventionStop
Response.Write ("<ul class=""base"">"& vbCrlf )
Response.Write ("<caption>"& FormatDateTime(dtmCurrentDay,2) &"</caption>"& vbCrlf)
' # For each day
IF dtmCurrentDay = dtmConventionStart Then
bookingUnit = dtmConventionStart
ElseIF dtmCurrentDay = dtmConventionStop Then
bookingUnit = dtmConventionStop
End IF
' # 1 UNIT = 1h to begin with
[b]' # Hightlighted problem[/b]
' # Do until a new day, then break for a new column,
' # One day per column that is
Do UNTIL bookingUnit >= DateAdd("h",24,dtmCurrentDay) OR bookingUnit >= dtmConventionStop
[b]' ## Database controll to check if time is booked or not
SET rsCheck = Server.CreateObject("ADODB.Recordset")
SET rsCheck = objdbConnection.Execute ("SELECT * FROM booking WHERE (Start = '"& bookingUnit &"' OR Stop = '"& bookingUnit &"') AND RoomID = "& event_room_id )
IF rsCheck.EOF Then
IF unitBooked = 1 Then
Response.Write (" booked")
End IF
ELSE
IF rsCheck("Stop") = bookingUnit Then
unitBooked = 0
Response.Write (" booked")
ElseIF rsCheck("Start") = bookingUnit Then
unitBooked = 1
Response.Write (" booked")
End IF
End IF
CloseRecordset(rsCheck)[/b]
[b]' # Highlighted problem[/b]
' # how do I loop it out? Hmm.
' # First thought is array, but how do I go about?
IF unitBooked = 1 Then
Response.Write (" booked")
End IF
Response.Write (" <li id="""& rowId &""" class=""unitruler")
' # if timeunit is boooked, attached the class "booked"
IF unitBooked = 1 Then
Response.Write (" booked")
End IF
Response.Write (""">"& bookingUnit &"</li>"& vbCrlf)
bookingUnit = DateAdd("h",1,bookingUnit)
rowId = rowId + 1
Loop
dtmCurrentDay = DateAdd("d",1,dtmCurrentDay)
Response.Write ("</ul>"& vbCrlf )
Loop
Det handlar om rätt korta bokningar alltså, från 3-4 timmar till ja, kanske hela dygn vilket gör att det är dumt att boka ett rum en hel dag....
Men nu har jag ändå kommit ganska långt, jag har lyckats kolla vid varje tidsenhet om den är bokad eller inte och därifrån.
Do UNTIL bookingUnit >= DateAdd("h",24,dtmCurrentDay) OR bookingUnit >= dtmConventionStop
Response.Write (" <li id="""& rowId &""" class=""unitruler")
' ## Database controll to check if time is booked or not
SET rsCheck = Server.CreateObject("ADODB.Recordset")
SET rsCheck = objdbConnection.Execute ("SELECT * FROM booking WHERE (Start = '"& bookingUnit &"' OR Stop = '"& bookingUnit &"') AND RoomID = "& event_room_id )
IF rsCheck.EOF Then
IF unitBooked = 1 Then
Response.Write (" booked")
End IF
ELSE
IF rsCheck("Stop") = bookingUnit Then
unitBooked = 0
Response.Write (" booked")
ElseIF rsCheck("Start") = bookingUnit Then
unitBooked = 1
Response.Write (" booked")
End IF
End IF
CloseRecordset(rsCheck)
Response.Write (""" onClick=""javascript: eventoptions('"& bookingUnit &"');"">"& bookingUnit &"</li>"& vbCrlf)
bookingUnit = DateAdd("h",1,bookingUnit)
rowId = rowId + 1
Loop
Problemet med denna kodsnutt är att den inte verkar hämta ut första booking.stop - av någon konstig anledning, något som har en idé varför?