webForumDet fria alternativet

"Hjälp med array och databas loop"

9 svar · 545 visningar · startad av N K

N KMedlem sedan aug. 20092 inlägg
#1

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.


doggelitoMedlem sedan juni 20003 076 inlägg
#2

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.

MickeA.comMedlem sedan feb. 20034 441 inlägg
#3

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
#4

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..

doggelitoMedlem sedan juni 20003 076 inlägg
#5

--

doggelitoMedlem sedan juni 20003 076 inlägg
#6

--

doggelitoMedlem sedan juni 20003 076 inlägg
#7

--

doggelitoMedlem sedan juni 20003 076 inlägg
#8

--

doggelitoMedlem sedan juni 20003 076 inlägg
#9

--

doggelitoMedlem sedan juni 20003 076 inlägg
#10

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
137 ms totalt · 3 externa anrop · v20260731065814-full.91fd2ad2
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)