Hallo,
ich bin zur Zeit dabei ein Checksystem für einen Terminkalender zu erstellen.
WEnn man einen Termin einträgt, hat er Attribute, wie Anfangs- und Endzeit, Tag, Art, usw.
Wenn ich jetzt einen neuen Termin anlegen möchte, will ich vorher checken, ob dort nicht schon ein Termin vorhanden ist.Ich komme im Moment nur nicht so ganz drauf, wie ich es machen soll.
Also die Abfrage der Termine, die an dem Tag schon vergeben sind, klappt, nur der Vergleich mit den eingegebenen Daten hinkt.Würd mich freuen, wenn mir jemand nen Denkanstoß geben kann.
Gruß
Mathiis
Du kannst sowohl mittels (My)SQL als auch per PHP eine solche Prüfung implementieren.
Ein Ansatz in SQL:
Seien "new_start_time" und "new_end_time" Variablen in einer Stored Procedure oder einem Trigger:
SELECT id FROM my_table m
WHERE new_start_time BETWEEN m.start_time AND m.end_time
OR new_end_time BETWEEN m.start_time AND m.end_time
/* ggf. weitere AND Bedingungen,
z.b: nach user_id o.ae. */ ;
Wenn die Ergebnismenge nicht leer ist, liegt eine Kollision vor.
Wenn, wie nahe liegend, auf weitere Bedingungen geprüft werden muss um eine Kollision zu erkennen, sollte die Query geeignet umsortiert werden; z.B. auf "user_id", falls vorhanden INT, würde ich instinktiv zuerst prüfen.
Mit Platzhaltern "new_start_time" und "new_end_time" kannst Du die Query auch via PDO oder anderen PHP DB-Schnittstellen ausführem.
Bei weiteren Fragen bitte unbedingt
- Plattform und MySQL-Version(Ganz wichtig!)
- PHP Version und Einsatzart (mod_php, ISAPI, CGI)
- ggf. Quellcode
mit posten!
Grüsse
"Solkar"