Håller på att bygga ett bokningssystem för hanteradet av rum och arrangemangen som äger rum där. Kontrollen av att boka är inget problem, det är löst.
Men har stora problem för att skapa en visningssida för bokningarna. Det finns inget färdigt time/schedualgrid i databasen att loopa ut - utan bara bokningarna för rummet. Jobbar mot en MySQL-databas.
Tabellstruktur med dummydata
_______________________
ID key 1
RoomID Int 1
EventID Int 10
Start datum 2010-10-01 14:00:00
Stop datum 2010-10-01 15:00:00
Perfekt vore att först loopa ut varje dag, i stil med en veckobaserad kalender med tider i kanten och sedan kolla upp de bokningar som finns. Denna loopar dock bara ut varje UNIT under bokningsbara tiden. Fungerar ju också iofs...
Bygger upp ett grid i asp:
' Datum att använda som exempel, dessa är dock dynamiska
dtmConventionStart = cDate("2010-02-26 12:00:00")
dtmConventionStop = cDate("2010-02-28 14:00:00")
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 = 30min to begin with
' # Hightlighted problem
' # 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
' # Database controll to check if there is an event on this time
' # Highlighted problem
' # how do I loop it out? Hmm.
' # First thought is array, but how do I go about?
Response.Write (" <li id="""& rowId &""" class=""unitruler")
' # if timeunit is boooked, attached the class "booked"
' # for now, an impossible equation
IF 1 = 2 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
Problem 1:
Men hur kontrollerar jag när ett arrangemang start och stoppar? För problemet här blir ju bara att jag får ut starttiden, sedan måste jag ju fortfarande loopa ut markerade mellan och det är här det brister, utan att få dubbelposter i existerande grid?
Jag tänker mig en array kanske, men har ingen aning om hur jag ska gå tillväga - hjälp?