Ik bezig om online software te maken. De software ontwikkel ik voor campings, en moet alle boekingen in het systeem zetten. Alle boekingen worden in eerste instantie handmatig in het systeem gezet. Nu weet ik wel hoe je een datum in de database opslaat, alleen niet hoe je dit per dag doet.
Er moet namelijk per standplaats een rij komen in een weer te geven table, die rood wordt als er gebookt is.
Nu wil ik het liefste hier ook nog een <a href> aan hangen, zodat je naar de booking doorgaat als er gebookt is.
Persoonlijk zou ik de reserveringen met een start datetime en eind datetime in een tabel plaatsen.
Mogelijk ziet je tabel er zo uit:
-id
-start
-eind
-plaats_nr
-klant_id
Wanneer je je planboord op het scherm wilt toveren laat deze altijd een bepaalde periode zien. Die van jou laat de periode van één maand zien. Om precies te zijn: November 2013. Laten we deze maand als voorbeeld pakken.
Je kunt dus beginnen je query zo op te stellen dat je alleen die reserveringen er uit pakt die:
- beginnen VOOR het EINDE van de maand (kleiner dan 1-12-2013)
EN
- eindigen NA het BEGIN van de maand (groter dan of gelijk aan 1-11-2013)
Indien je slechts bijvoorbeeld alleen data wilt laten zien van één klant of één plaatsnummer dan kun je daar ook op filteren uiteraard.
Alleen zo krijg je alle reserveringen die gedeeltelijk of helemaal in de maand november 2013 vallen.
SELECT * FROM reservations WHERE start < '2013-12-01' AND eind >= '2013-11-01'
De rijen uit de $result stop je wederom in een array zodat je een twee dimensionale array krijgt.
DateTime() moet afgeraden worden voor kalenderapplicaties, het is namelijk supertraag. Datumberekeningen kun je beter door een database laten afhandelen, dat scheelt een factor 1000 in snelheid. Dat is zeker merkbaar als je het ook op een Synology NAS oid wilt laten draaien. DateTime() wil je dan echt alleen maar voor enkele ad-hoc berekeningen gebruiken, NIET in een lus!