Reserveringstabel
Ik moet een reservering pagina maken voor een klant die tennisbanen verhuurt.
Er zitten een aantal eisen in waarbij ik niet weet hoe ik die aan moet pakken dus ik hoop dat jullie mij kunnen helpen :)
Het gaat erom dat een baan voor een half uur gereserveerd kan worden, tot van 12:00 tot 20:30. Ook mag een baan niet twee keer op eenzelfde tijdstip verhuurd worden, wat logisch is.
Nu heb ik twee tabellen:
baan
- id
- naam
Verder volgens mij niks aan toe te voegen. De reden dat ik deze maak is omdat de klant zijn banen wil beheren.
reservering
- id
- datum
- tijd
- naw gegevens
- baan_id
Nu weet ik niet eens of dit wel goed is, maar het gaat mij er meer om hoe ik al die tijden ga verwerken. Want het gaat om 17 verschillende tijdstippen, per dag.
Waar ik aan dacht is dat hij, als iemand een datum klikt, kijkt in een array welke tijden er nog beschikbaar zijn oid, maar waar zou hij de tijden vandaan moeten halen? Moet ik een extra tabel met alle tijd variaties maken? Nee toch? Dat moet makkelijker kunnen lijkt me.
Wat ik in mijn hoofd heb is dus dat er een datum wordt gekozen, en er dan een lijst komt met beschikbare tijdstippen voor die dag. Als een bepaalde tijdstip 8x gekozen is (8 banen), dan moet hij uit de lijst.
Ik hoop dat jullie me kunnen helpen!
Het gaat alleen maar om de database opbouw, de rest vind ik zelf wel uit :)
Wat je wel kunt doen is dat je niet met tijden werkt maar de tijden aan een periode koppelt. Dat werkt wellicht makkelijker voor je.
Dus:
12.00 - 12.30 is periode 1
12.30 - 13.00 is periode 2
etc.
Dan kun je gewoon een integer in de database invoeren bij tijd of periode.
Vervolgens maak je gewoon per baan een lijst <ul> met 17 elementen <li> (of een table) en voeg je daar tijdens het echoen eventuele reserveringen aan toe.
Gewijzigd op 12/01/2011 21:54:58 door The Ultimate
Maar hoe weet het script dan wat een 6 is bij tijd? Dat moet dan toch via een ander tabel vergeleken worden met het eraan gekoppelde tijdstip?
De tijden koppel je er pas aan op het moment dat je de reserveringstabel weergeeft en is puur een kwestie van weergave. De database hoeft toch niet te weten dat periode 6 van 14.30 tot 15.00 uur duurt? De database hoeft enkel te weten dat periode 6 op baan x bezet is.
Etc. En die dan include? En dat je via de db kijkt of 'tijd' 6 nog vrij is en dan dat laten vergelijken met hierboven?
(ik zit op een ipad dus duidelijk weergeven wat ik bedoel gaat niet sorry...)
Edit: the ultimate was me voor.
Toevoeging op 12/01/2011 23:29:44:
Ik zat nog even te denken.
Als je nu de tijds periode verdeeld en de baan nummers geeft, die in db stoppen.
Dat dmv een mysql query Update de baan status van open = o naar gesloten = # te zetten.
En voordat je dat doet dmv een
if (status != #)
{zet baan op verhuurd}
Else
{ Heelaas is de baan verhuurd.}
Gewijzigd op 12/01/2011 23:13:10 door Ocirina Ocirina
Maar bedankt voor je input! :)
Toevoeging op 13/01/2011 08:52:52:
Nog even een vraag: in welk tabel moet ik verwerken of een baan beschikbaar is of niet? En als er dus een reservering is gemaakt voor een bepaalde datum en tijdstip, waar moet ik dan aangeven dat die baan op dat tijdstip gereserveerd is (want er moet geteld worden wanneer de 8 is bereikt, toch?).
Je hebt een db. die heeft 8 banen,
ze hebbel allemaal id dus: bid1 bid2 bid3.
Dan maak je dus 17 periodes per baan, en zet je die allemaal op O = OPEN.
Dan doe je select bid, periode from banen WHERE bid = '$INPUT gevraagde baannr.' AND periode = '$inpute gevraagde periode'
En die heeft dan of de waarde O =open of - = gesloten.
Dan controleer je die waardes dmv php of die gereserveerd is of niet.
Code (php)
Toevoeging op 13/01/2011 10:24:45:
Zoiets heb ik in gedachte, het kan simpeler maar dit werkt gewoon goed.
Gewijzigd op 13/01/2011 10:24:05 door Ocirina Ocirina
Er moet gezegd worden welke datum en tijd er gereserveerd moet worden. Dan moet er een overzicht gegenereerd worden met alle banen en de tijdstippen onder elkaar, als een soort van tabel. Dan hoeft de gebruiker maar 1x te klikken op de gewenste baan/tijdstip om te reserveren.
Maar in principe kan ik hier dezelfde db opzet mee gebruiken, toch?
Dan klikt die persoon op die datum, dan verschijnt er een nieuw pagina met de vrije tijden.
Precies met dezelfde opzet. Alleen is de manieer van het controleren of die vrij is iets veranderd. Dmv een get of een post functie stuur je dit door naar de controle pagina of die vrij is. Zo ja dan laat je hem reserveren begrijp je?
Ik heb het wel duidelijk in mijn hoofd maar ik weet niet of ik het je zo duidelijk maak.
Ja zo had ik het ook ongeveer in mijn hoofd, maar toch bedankt!!
Gewijzigd op 13/01/2011 14:44:02 door John D