Controleren of het al verhuurd is (check datums)
van het te verhuren ding wordt bijgehouden.
(in dit voorbeeld auto)
tabel boeking
- id (auto nummering)
- auto
- van_datum
- tot_datum
nu staat er in de database het volgende
auto van tot
auto1 1-9-2007 6-9-2007
auto1 11-9-2007 15-9-2007
dus auto1 is niet verhuurd tussen 7-9-2007 en 10-9-2007
nu wil ik dat zodra ik een nieuwe boeking maak van bv 7-9 tot 10-9 dat die eerst controleerd of de auto vrij is.
ik ben er al de hele ochtend mee bezig maar het lukt niet.
hij moet dus controleren of de ingevoerde datum in dit geval 7-9 tot 10-9 vrij is zo ja moet die verder gaan.
stel ik wil boeken tussen 7-9 en 12-9
(wat niet kant van de auto is van 11-9 weer verhuurd) moet ik hier een fout melding krijgen.
Maar hoe ga ik dit aanpakken
ik heb zelf gedacht om de verhuur van datum te verlijken met een van_datum en tot_datum maar dit werk alleen bij de eerste rij.
Tips en trucs zijn welkom
alvast bedankt
Dus wanneer overlappen twee afspraken? Of: wanneer overlappen ze niet.
Mijn oplossing was toen: twee afspraken overlappen niet als:
de eindtijd van afspraak 2 VOOR de begintijd ligt van afspraak 1
OF
de begintijd van afspraak 1 NA de eindtijd ligt van afspraak 2
Als de tijden mogen aansluiten, dus afspraak 1 eindigt om 15:00 uur en afspraak 2 begint om 15:00 uur, dan moet je gebruik maken van "groter dan of gelijk" en "kleiner dan of gelijk".
Jan Koehoorn schreef op 02.09.2007 12:48:
Ja leuk probleem he? Ik heb het ook ooit gehad, bij een lokalenrooster. Je moet het zo zien: als je een nieuwe periode wilt inboeken, moet je weten of hij overlapt met reeds bestaande periodes.
Dus wanneer overlappen twee afspraken? Of: wanneer overlappen ze niet.
".
Dus wanneer overlappen twee afspraken? Of: wanneer overlappen ze niet.
".
Ja dat is het idee er achter dat klopt..
datum mogen niet met elkaar overlappen maar hoe controleer ik dat
WHERE datumtijd1 > datumtijd2
dat regelt MySQL dus voor je.
Jan Koehoorn schreef op 02.09.2007 13:08:
Als je in je DB met DATETIME velden werkt, kun je ze gewoon vergelijken:
WHERE datumtijd1 > datumtijd2
dat regelt MySQL dus voor je.
WHERE datumtijd1 > datumtijd2
dat regelt MySQL dus voor je.
kan je nog iets meer helpen.
want ik snap de logica er niet achter.
ik heb in mijn DB met DATETIME staan de datums zoals hier boven vermeld.
handmatig voer in een te verhuren datum in . 7-9 tot 10-9
die haal ik op met post en dan heb ik
$datum1 = 7-9-07
$datum2 = 10-9-07
als ik $datum1 > tot_datum(uit de db) dat gaat goed maar zodra ik datum2 wil vergelijken met de van_datum dan gaat het fout.
want het verlijk met de eerste van_datum en niet met de van_datum die hoger staat dan de tot_datum waarmee datum1 vergeleken wordt
En waar is dan de datum? Een datum gebruik je in het formaat yyyy-mm-dd, een ISO-formaat.
Hoe jij dat op het scherm toont of in laat voeren, dat is een ander verhaal, maar in de database gebruik je gewoon 2007-09-10 voor de datum 10 september 2007.
pgFrank schreef op 02.09.2007 13:27:
$datum2 = 10-9-07
En waar is dan de datum? Een datum gebruik je in het formaat yyyy-mm-dd, een ISO-formaat.
Hoe jij dat op het scherm toont of in laat voeren, dat is een ander verhaal, maar in de database gebruik je gewoon 2007-09-10 voor de datum 10 september 2007.
En waar is dan de datum? Een datum gebruik je in het formaat yyyy-mm-dd, een ISO-formaat.
Hoe jij dat op het scherm toont of in laat voeren, dat is een ander verhaal, maar in de database gebruik je gewoon 2007-09-10 voor de datum 10 september 2007.
ja de datum notatie dat klopt die moet idd anders.
het wordt id yyyy-mm-dd maar dan weet ik nog niet hoe ik een "gat" in de database kan zoeken.
of zo dat 2 datums tussen liggen..
Gewijzigd op 01/01/1970 01:00:00 door the master
schop
Quote:
Wanneer ik 'tussen' vertaal naar het engels, kom ik op BETWEEN uit. Ga daar eens mee stoeien.of zo dat 2 datums tussen liggen..