Hallo und guten Abend!
Ich arbeite seit einigen Wochen an einen Web-Kalender. Hauptsächlich mit PHP und JavaScript. Als Backend MySQL-Server. Da ich gerade kräftig auf dem Schlauch stehe bzw. ein mittelgroßes Logikproblem habe darf ich hier um Denkanstöße oder Ideen bitten.
Also, nun zum Problem. Der Kalender hat verschieden Ansichen. Monats-, Wochen- und Listenansicht. Termine kann man u.A. mit Start- und End-Datetime erfassen. Die eingetragenen Termine werden jeweils nur für den angezeigten Zeitraum selektiert. Also bei Wochenansicht und KW1 z.B.:
SELECT * FROM tbl WHERE start >= '2011-01-03 00:00:00' AND end <= '2011-01-09 23:59:59'
Soweit so gut. Es gibt nun aber auch mehrtägige Termine. Wenn dieser nun z.B. am 01. Jänner beginnt und am 05. endet wird dieser mit oben angegeben Statement leider nicht selektiert. Angezeigt werden sollte er aber weil zumindest ein Teil des Termins in den Zeitraum fällt
Was tun?
Zunächst dache ich, dass ich den Zeitraum nach dem selektiert wird einfach erweitere. Ist aber nicht schön und verschiebt das Problem bestenfalls um x Tage.
Dann dachte ich, ich schreibe bei mehrtägigen Terminen einfach pro Tag einen Datensatz. Das Problem wäre damit gelöst. Schön finde ich das aber auch nicht. Vorallem weil in der Programmlogik dann einiges geändert werden müsste.
Am Liebsten wäre mir, wenn man das schon beim Selektieren der Datensätze lösen könnte. Hab aber gerade keine Idee wie so ein Statement aussehen könnet.
Vielleicht kann mir ja wer auf die Sprünge helfen oder hat andere Lösungsvorschläge.
Danke!
Karlo