Terminabfolgen / Terminserien

Coach

Aktives Mitglied
Guten Morgen,

ich will auf ner Homepage nen Eventkalender realisieren. Jetzt weiß ich, dass z.B. in der Zeit von 01.01.2008 bis 06.12.2008 jeden Freitag das gleiche Event stattfindet.
Wie könnt ich das realisieren, dass ich dann das Anfangs- und Enddatum auswählen kann und der mir dann die Freitage dazwischen in meine DB schreibt?
 
QUOTE (Coach @ Mi 9.01.2008, 11:40)Jetzt weiß ich, dass z.B. in der Zeit von 01.01.2008 bis 06.12.2008 jeden Freitag das gleiche Event stattfindet.
Wie könnt ich das realisieren, dass ich dann das Anfangs- und Enddatum auswählen kann und der mir dann die Freitage dazwischen in meine DB schreibt?

Das läßt sich so nicht allgemein beantworten.

Du kannst eine Tabelle anlegen mit Anfangs- und Endtermin plus einem Abstand (hier 7 Tage) zwischen zwei Terminen oder den Wochentag als Zahl zwischen 0 und 6. Dann kann sich ein Script diese Information auslesen und gibt solange Tage aus, bis das Enddatum überschritten ist.

Das, was so ein Script macht, könnte auch eine hinreichend komplexe Sql-Abfrage machen - etwas ähnliches nutze ich innerhalb von server-daten für Kalenderdarstellungen.

Prinzip: Tabelle, in der 'alle Tage' drinstehen (die Tabelle wird bei Bedarf vergrößert).


QUOTE Select A._tbl_CalendarId, A.thisDay, B.TextInfo
From _tbl_Calendar As A Left Join
(Select C._tbl_CalendarId, D.TextInfo
From _tbl_Calendar As C Inner Join Termine As D
On C.thisDay Between D.Beginn And D.Ende And DatePart(dayofweek, C.thisDay) = D.Wochentag) As B
On A._tbl_CalendarId = B._tbl_CalendarId


Die Unterabfrage listet alle Tage zwischen den Randintervallen, die zusätzlich auf diesen Wochentag fallen, die umgebende Abfrage listet alle Tage einmal, zusätzlich von den Tagen mit Termin irgendeine Info.

Die 'gegenteilige Variante' besteht darin, beim Eintragen in die Datenbank aus diesen drei Informationen alle Termine sofort zu berechnen und für jeden Termin eine Zeile in einer Tabelle einzutragen, die nur eine Datumsspalte enthält. Wenn das Intervall zwanzig Wochen umfasst, werden zwanzig Einzelzeilen erzeugt.

Oder einfach server-daten nutzen und sich von mir was Nettes einrichten lassen - kostet aber, wäre dann aber auch gleich mehrbenutzerfähig und vieles mehr, könnte auch in verschiedene Domains gleichzeitig eingebunden werden.
tongue.gif
 
ok,

ich werds dann so realisieren, dass ich das beim Eintragen aufsplitte.... Denke mal, dass das am einfachsten und schnellsten ist, weils nur ein Mal ausgeführt wird.
 
Hab dazu jetzt nochmal ne Frage:
Ich hab mit 2 Select Boxen und nem Auswahlfeld die Möglichkeit, ein Start- und Enddatum einzugeben und im Auswahlfeld die Anzahl der Tage auszuwählen (z.B. Termin alle 14 Tage)
wie kann ich jetzt die Eintragung in die DB vornehmen wenn ich für jeden Termin einen eigenen Datensatz anlegen möchte?
Also irgendwas wie while(startdatum + auswahlfeld < enddatum) ...
Aber wie mach ich das am Besten? Alles in Timestamps umwandeln?
 
Zurück
Oben