N KMedlem sedan aug. 20092 inlägg Hallå,
Håller på och pilla på ett litet "bokningssystem" och det var ett tag sen man pillade med sådant här så nu står det helt still..
Problemet är den att man bokar timma för timma, och tiden skall sparas liknande "18,19,20" (för bokning kl. 18.00 till 20.00) i fältet "Tid" i databasen. (förmodligen inget problem, men jag har flummat nu ett bra tag)
*Hur gör jag en lyckad loop utav detta så att tex inte detta kan ske:
Eva har bokat 18,19
och sen kommer Ahmed och bokar 19,20*
Koden skall bara visa dagens tider.
Hmm, riktigt dålig databasdesign där hörre du. Gör om nu, du kommer att ångra dig senare annars! ;)
Bokningstabellen bör ha två datetimefält StartDate och EndDate där man anger när bokningen startar samt slutar. Man ska inte hålla på med textkolumner och kommaseparera en massa värden.
När du har de två kolumnerna kan du enkelt kolla så att inget dubbelbokas.
Håller med ovanstående. Lagrar du start -och sluttid så kommer du t.ex. ha stor nytta av SQL's BETWEEN osv.
N KMedlem sedan aug. 20092 inlägg Det med start och stopp har jag också funderat på, men är helt tappad i golvet just nu känns det som, stirrat mig dum på detta.. ingen vänlig själ som har lust o visa ett exempel på hur den frågan skulle se? Om jag vill lista upp alla lediga tider också?? :OO pinsamt detta ju..
Jag hade gjort så här:
1. Hämta alla bokade tider under aktuell dag med metoden getRows()
(GetRows() kan du söka om här på forumet)
SELECT *
FROM tabell
WHERE 'aktuellt datum' BETWEEN StartDate AND EndDate
2. Loopa igenom aktuell dag
Dim currentDate, bookings, bookingIsAvailable, i, j
currentDate = Date()
bookings= Array från databas med getrows()
For i = 0 To 23
bookingIsAvailable = true
Response.Write("Boktid: " & currentDate)
For j = 0 to uBound(bookings)
If DateDiff("h", currentDate, bookings(j,1)) = 0
bookingIsAvailable = false
Exit For
End If
Next
If bookingIsAvailable Then
Response.Write("Wee, tiden är ledig!")
Else
Response.Write("Sorry, tiden är upptagen!")
End If
currentDate = DateAdd("h", 1, currentDate)
Next