Autor |
Nachricht |
Benutzer 16997
Account gelöscht Threadersteller
Ort: -
|
Verfasst Mi 14.12.2005 12:24
Titel [PHP] Wiederkehrende Termine |
|
|
Ich habe hier eine Anwendung, in der Termine vorkommen, die von Benutzern angelegt werden und dann auf einer Internetseite angezeigt werden. Soweit so gut. Nun möchte ich das Ding ein wenig "aufmotzen", und zwar soll es möglich sein, wiederkehrende Termine anzulegen (wie z.b. die Serienelemente in Outlook).
Technische Einzelheiten sind kein Problem, es geht um ein Konzept zur Erfassung der Wiederholungsmuster. Kennt da jemand von euch Ansätze oder Tutorials? Die Frage ist halt, wie erfasst man die verschiedenen Wiederholungsmöglichkeiten möglichst sinnvoll in einer Datenbank, es gibt ja x Möglichkeiten:
Jeden Montag.
Jeden 2. Montag im Monat.
Jeden 15. eines Monats.
Alle 16 Tage.
Jeden Wochentag.
Jeden Dienstag und jeden Freitag.
...
|
|
|
|
|
Doppelplusgut
Dabei seit: 06.10.2005
Ort: Zimmer 101
Alter: 55
Geschlecht:
|
Verfasst Mi 14.12.2005 13:05
Titel
|
|
|
Darfs auch was fertiges sein? Dann guck mal hier
|
|
|
|
|
Anzeige
|
|
|
Benutzer 16997
Account gelöscht Threadersteller
Ort: -
|
Verfasst Mi 14.12.2005 14:01
Titel
|
|
|
Doppelplusgut hat geschrieben: | Darfs auch was fertiges sein? Dann guck mal hier |
hätte ich vll dazuschreiben sollen, es darf nichts fertiges sein. natürlich schon im sinne von ein fertiges code-schnipsel, was ich mir ansehe. könnte mir ja auch mal ansehen wies bei phprojekt gemacht wird. aber ich will/muss es schon selber machen.
|
|
|
|
|
Backware
Dabei seit: 09.12.2004
Ort: bei Köln
Alter: 38
Geschlecht:
|
Verfasst Mi 14.12.2005 17:09
Titel
|
|
|
wie sieht denn die datenstruktur der termine aus?
|
|
|
|
|
Benutzer 16997
Account gelöscht Threadersteller
Ort: -
|
Verfasst Do 15.12.2005 09:41
Titel
|
|
|
Backware hat geschrieben: | wie sieht denn die datenstruktur der termine aus? |
darum gehts doch gerade. also ein paar dinge sind ja klar: id, beschreibung, etc.
alles kein problem. jetzt geht es um die datenstruktur der wiederholungen. vielleicht macht es sinn, eine tabelle mit terminen anzulegen und diesen entweder ein bestimmtes datum (einzeltermin) oder ein wiederholungsmuster aus einer anderen tabelle zuzuweisen (wiederholungstermin).
|
|
|
|
|
bigdeal
Dabei seit: 14.07.2005
Ort: Aßlar
Alter: 40
Geschlecht:
|
Verfasst Do 15.12.2005 10:12
Titel
|
|
|
Einfache Variante wäre, jedem Termin ein Anfangs + Enddatum zu geben und wenn der Termin sich irgendwie wiederholen soll, diese als neue Einträge mit Anfangs+Enddatum in die DB zu schreiben.
|
|
|
|
|
tommy-p
Dabei seit: 21.01.2004
Ort: Cottbus
Alter: 38
Geschlecht:
|
Verfasst Do 15.12.2005 23:09
Titel
|
|
|
[quote]Einfache Variante wäre, jedem Termin ein Anfangs + Enddatum zu geben und wenn der Termin sich irgendwie wiederholen soll, diese als neue Einträge mit Anfangs+Enddatum in die DB zu schreiben. [/quote]
Soviel zur Datenbank. Aber wie weiter? Die Frage bezieht sich ja sicher darauf, wie der Nutzer die Termine möglichst einfach eintragen kann. Also wie gestaltet man die Eingabemasken für alle möglichen Wiederholungsarten.
Wie kann man Serien möglichst elegant verlängern oder verkürzen, ohen dass man die einzelnen Termine löschen muss?
Und weiter gehts: wie kann man ganze Terminreihen löschen oder editieren? Das müsste am Besten über eine Art Verknüpfungs-ID gehen, anhand derer man erkennt, welche Termine zu einer Serie gehören? Hat da jemand Erfahrung? Oder gibt es schöne Lösungen? (phpProjekt schaue ich mir mal an).
Schöne Grüße,
tommy-p
|
|
|
|
|
Backware
Dabei seit: 09.12.2004
Ort: bei Köln
Alter: 38
Geschlecht:
|
Verfasst Fr 16.12.2005 09:23
Titel
|
|
|
bene hat geschrieben: | Backware hat geschrieben: | wie sieht denn die datenstruktur der termine aus? |
darum gehts doch gerade. also ein paar dinge sind ja klar: id, beschreibung, etc.
alles kein problem. jetzt geht es um die datenstruktur der wiederholungen. vielleicht macht es sinn, eine tabelle mit terminen anzulegen und diesen entweder ein bestimmtes datum (einzeltermin) oder ein wiederholungsmuster aus einer anderen tabelle zuzuweisen (wiederholungstermin). |
ich persönlich würds wie folgt machen:
eine spalte "repeatInterval" oder derartiges... in welcher du die Tage speicherst nach wievielen es wiederholt werden soll....
die id ist ein timestamp des einfügedatums.... wodurch du dann den starttermin hast und durch die anzahl der zu wiederholenden tagen/sekunden (kannst ja auch so machen <.<) kannst du dann ausrechnen zudem kommt ein feld "iteration" welches die anzahl der wiederholungen speichert... sprich so:
id | name | repeatinterval | iteration | ...
__________________________________________________________________
1134721046 | Geburtstag von Bla | 365 (oder halt in sekunden: 31536000) | 3
dann überprüfst du einfach, ob time ( ) >= id + repeatInverval ist.... und gleichzeitig kleiner id + repeatInverval + 15 stunden oder so.. je nachdem wie lang ein termin aktiv sein soll..
natürlich solltest du die iteration noch einberechnen.... deswegen solltest du immer das aktuelle jahr in die id mit einfügen.. sprich:
mktime ( ) für die id...
bei der eingabemaske kannst du für die wiederholung einfach eine selectbox einbauen... für die anzahl der wiederholungen ein textfeld für zahleneingabe (welches du dann per php auf korrektheit kontrollieren musst!)
jedes mal, wenn der termin aktiv war... setzt du iteration eine stufe niedriger (3 -> 2 -> 1 -> 0) sobald es bei 0 steht.. kommt die cleanUp Funktion, welche sämtliche einträge mit null wiederholungen aus der db löscht..... oder du lässt sie drin.. sie werden dann nichtmehr ausgeführt... aber die user können ja dann trotzdem die iteration wieder hochstellen...
für das "an diesem wochentag" kannst du mittels der lieben date-funktion die zahl des aktuellen wochentags in einem weiteren feld speicher.. wodurch dann interval-mäßig der datensatz leer bleibt... sprich:
id | name | repeatinterval | iteration | repeatDay
__________________________________________________________________
1134721046 | Geburtstag von Bla | 0 | 3 | 5
dann einfach die zahl des aktuellen wochentags mit der in der db vergleichen.. und fertsch
hoffe das hat auch nur einer verstanden
Zuletzt bearbeitet von Backware am Fr 16.12.2005 09:30, insgesamt 3-mal bearbeitet
|
|
|
|
|
|
|
|
Ähnliche Themen |
Termine auf HP
RSS namespace für Termine
Termine auslesen - Need help
Outlook Termine löschen
Termine an Outlook übergeben
Termine online reservieren für WEB
|
|