Alexander 33433: Termine automatische Wiederholung

Auf der Internetseite, die ich gerade mache, soll der Administrator die möglichkeit haben, Termine einzutragen. Die werden dann in die Datenbank geladen. Dabei wird der Beginn und das Ende des Termins als DATETIME (JJJJ-MM-TT SS:MM:SS) gespeichert.

Jetzt möchte ich noch die Möglichkeit anbieten, den Termin Täglich, Wöchentlich, Monatlich und Jährlich zu wiederholen.
Jährlich ist für mich kein Problem, da ich den Termin einfach z.B. fünf Mal in die Datenbank speichere und das Jahr immer um 1 erhöhe.

Monatlich denke ich ist auch nicht so schwer, da jedes Jahr genau 12 Monate hat, und ich nach 12 einfach das Jahr um 1 erhöhe und wieder bei 1 anfange.

Aber wie kann ich wöchentlich und täglich speichern? Da habe ich gar keine Idee.

  1. Hallo Alexander,

    Da Du eh mit PHP arbeitest, stehen Dir so praktische Zeit- und Datums-Funktionen wie strtotime() u.s.w. zur Verfügung. strtotime() kann auch mit "+7 days" u.s.w. umgehen.

    Oder Du könntest mit timestamps arbeiten. Ein Tag hat 24*60*60 Sekunden, eine Woche hat 7*24*60*60 Sekunden.

    mfg Thomas

    1. Hallo,

      Oder Du könntest mit timestamps arbeiten. Ein Tag hat 24*60*60 Sekunden, eine Woche hat 7*24*60*60 Sekunden.

      Ich glaube da kann man Probleme bekommen, wenn der Umbruch von Sommer auf Winterzeit oder umgekehrt dazwischenkommt.

      Ich habe das bei mir so gelöst, dass ich mir mit mktime vom Ausgangstag die jeweiligen Serienelemente generiere und sie dann abspeichere.

      Ich habe auch eine Funktion wo man alle X. Monate am Y. Tag bzw alle X. Wochen an den Tagen XYZ. einen Eintrag machen lassen kann.

      Das sieht bei mir etwas komplizierter aus. Es gibt eine for Schleife die jeden Tag durchgeht und über 2 Hilfsvariablen werden jeweils die Wochenwechsel und die "X.ten Wochen" erkannt.

      Die Funktion strtotime kannte ich allerdings noch nicht - vielleicht geht es damit auch einfacher. (Wie ist es da mit der Sommer/Winterzeit?)

      Probiere es doch mal so oder so aus und wenn ich zu meiner Lösung noch was schreiben soll dann melde dich nochmal.

      Gruß
      Alex