Tijd tussen begin en eindttijd reserveren
Ik wil maken een registratie systeem voor gereserveerde laptops. Nu zet ik in mijn DB de begin en einddtijd. en wil ik de tijd daartussen berekenen (in tijd dus niet het aantal uren ertussen) dus als iemand anders wil reserveren in de tijd dat een bepaalde laptop weg is dat dat niet gaat dus echo "fout ofzoiets"; is dit enigzins mogelijk en zoja hoe zou ik dit kunnen oplossen.
laptops
--------
id (int)
naam (varchar)
omschrijving (varchar)
reserveringen
----------------
id (int)
laptop_id (int)
begin (datetime)
eind (datetime)
Je zou dan een lijst van alle beschikbare laptops op een ingevoerde tijd weer kunnen geven. Oftwel een lijst genereren met laptops waarvan het gegeven tijdstip niet tussen de begin en eindtijd van een andere reservering ligt.
Code (php)
Misschien is het ook handig een functie te maken waarbij ik een range creeer vanuit mijn select query en op het moment dat men iets wil inserten in de DB de range controleren
Gewijzigd op 01/01/1970 01:00:00 door Jurgen assaasas
De date() functie in php geeft immers een gewone string terug. Als je toch php wilt gebruiken, zul je er op moeten letten dat het formaat van de datum/tijd gelijk is aan yyyy-mm-dd hh:mm:ss. Als je namelijk 2-11-2006 vergelijkt met 3-10-2006 zal php zeggen dat 2-11 kleiner is (dus eerder komt) dan 3-10.
Wil je het in php doen, dan kun je gewoon de begin en eindtijd van een bepaalde laptop uit je tabel reserveringen halen:
Dus zou ik voordat ik een insert in mijn db via een extra query checken of de range in gebruik is.
Als je de controle met php uit wilt voeren wel ja. Maar nogmaals, persoonlijk zou ik ervoor kiezen om de gebruiker een bepaalde periode op te laten geven waarin hij een laptop wil reserveren en aan de hand daar van de beschikbare laptops te tonen.
Jurgen schreef op 02.11.2006 10:58:
Zorg je er voor dat jouw database dit checked, dat is waterdicht. Zet dus een goede constraint in de database die voorkomt dat je uberhaubt dubbele boekingen kunt maken. Een controle vanuit php met een extra query, is achterhaald op het moment dat je hem hebt uitgevoerd. De resultaten zijn dus niet 100% betrouwbaar.Dus zou ik voordat ik een insert in mijn db via een extra query checken of de range in gebruik is.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Mensen komen op de pagina. Hier zien zij laptops zij kiezen 1 van de betreffende laptops.
vervolgens komen zij op een andere pagina waar alle tijden van die laptops staan.
zij willen een laptop reserveren... zij kiezen een bereik(begin, eindtijd) dat beschikbaar is: query insert into.
zij kiezen een bereik dat bezet(controleren of de begindatum niet tussen een tijdstip valt in een andere begin/eind bereik) is: error de laptop is op dat moment niet aanwezig
het weergeven van tijden is geen probleem ik snap alleen niet hoe ik die bereiken uitreken.'
en misschien de andere optie, het weergeven van beschikbare tijden. hoe geef ik dat dan weer weer, ik niet snap :(