Beste mensen hallo! Hier komt een complex verhaal. Alle oplossingen en reacties zijn van harte welkom, ik vraag je echter wel om ALLES dat hieronder staat eerst even door te lezen voordat je een reactie geeft. Thanx a lot!
Ik ben dus bezig met het maken van een agenda systeem voor een verhuurbedrijf van groepsaccommodaties. Zoals je zult begrijpen wordt hier vaak gewerkt met standaard perioden zoals de midweek (ma t/m vr), weekend (vr t/m ma) en de hele week (ma t/m ma of vr t/m vr).
Ik ga jullie nu even 3 maanden voorleggen (mei, juni en juli) en daarvan neem ik de middelste (juni) als voorbeeld om mijn probleem uit te leggen:
Omdat er standaard perioden (midweek, weekend en week) berekend kunnen worden zou ik in bovenstaand geval (voor het gemak er even vanuit gaande dat alle data nog vrij is) het volgende lijstje willen genereren:
Ik hoop dus dat een van jullie voldoende intelligentie heeft om zich in deze situatie in te kunnen leven en in staat is om mij hierbij te helpen. Ik ben uiteraard graag bereid nader toe te lichten indien je vragen hebt.
Ik ben dus bezig met het maken van een agenda systeem voor een verhuurbedrijf van groepsaccommodaties. Zoals je zult begrijpen wordt hier vaak gewerkt met standaard perioden zoals de midweek (ma t/m vr), weekend (vr t/m ma) en de hele week (ma t/m ma of vr t/m vr).
Ik ga jullie nu even 3 maanden voorleggen (mei, juni en juli) en daarvan neem ik de middelste (juni) als voorbeeld om mijn probleem uit te leggen:
code:
Deze agenda wordt datum voor datum automatisch gegenereerd in mijn php-script. D.m.v. de functie IsRes() kan ik nagaan of een bepaalde datum wel of niet gereserveerd is. Als ik 1 terugkrijg is de datum reeds gereserveerd, bij 0 is de datum nog vrij.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| -------------------------- # Mei 2003 # -------------------------- Zo Ma Di Wo Do Vr Za 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 -------------------------- -------------------------- # Juni 2003 # -------------------------- Zo Ma Di Wo Do Vr Za 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 -------------------------- -------------------------- # Juli 2003 # -------------------------- Zo Ma Di Wo Do Vr Za 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 -------------------------- |
Omdat er standaard perioden (midweek, weekend en week) berekend kunnen worden zou ik in bovenstaand geval (voor het gemak er even vanuit gaande dat alle data nog vrij is) het volgende lijstje willen genereren:
code:
Indien dan bijvoorbeeld de data 6 juni, 7 juni, 8 juni en 9 juni bezet blijken te zijn moeten de volgende perioden niet meer getoond worden, omdat deze de bezette data overlappen:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| midweek: ma 02 juni t/m vr 06 juni midweek: ma 09 juni t/m vr 13 juni midweek: ma 16 juni t/m vr 20 juni midweek: ma 23 juni t/m vr 27 juni midweek: ma 30 juni t/m vr 04 juli weekend: vr 30 mei t/m ma 02 juni weekend: vr 06 juni t/m ma 09 juni weekend: vr 11 juni t/m ma 14 juni weekend: vr 18 juni t/m ma 21 juni weekend: vr 25 juni t/m ma 28 juni week : ma 02 juni t/m ma 09 juni week : vr 06 juni t/m vr 13 juni week : ma 09 juni t/m ma 16 juni week : vr 13 juni t/m vr 20 juni week : ma 16 juni t/m ma 23 juni week : vr 20 juni t/m vr 27 juni week : ma 23 juni t/m ma 30 juni week : vr 27 juni t/m vr 04 juli |
code:
Nou is mijn vraag hoe ik dit zo efficiënt mogelijk voor elkaar kan krijgen. Kijk, met een lap code van 5 beeldschermen vol kan ik dit wel voor elkaar krijgen, maar ik heb het gevoel dat dat veel efficiënter kan. Mijn gedachte zou zijn om per data alle mogelijkheden te berekenen! Maar dat komt er op neer dat je sommige data wel 30 keer controleert of deze wel of niet bezet is.1
2
3
| weekend: vr 06 juni t/m ma 09 juni week : ma 02 juni t/m ma 09 juni week : vr 06 juni t/m vr 13 juni |
Ik hoop dus dat een van jullie voldoende intelligentie heeft om zich in deze situatie in te kunnen leven en in staat is om mij hierbij te helpen. Ik ben uiteraard graag bereid nader toe te lichten indien je vragen hebt.