mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Sa 03.12.2016 23:09 Benutzername: Passwort: Auto-Login

Thema: [PHP] Wiederkehrende Termine vom 14.12.2005


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [PHP] Wiederkehrende Termine
Seite: 1, 2, 3, 4  Weiter
Autor Nachricht
bene
Threadersteller

Dabei seit: 22.01.2005
Ort: -
Alter: -
Geschlecht: -
Verfasst Mi 14.12.2005 12:24
Titel

[PHP] Wiederkehrende Termine

Antworten mit Zitat Zum Seitenanfang

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.
...
  View user's profile Private Nachricht senden
Doppelplusgut

Dabei seit: 06.10.2005
Ort: Zimmer 101
Alter: 47
Geschlecht: Männlich
Verfasst Mi 14.12.2005 13:05
Titel

Antworten mit Zitat Zum Seitenanfang

Darfs auch was fertiges sein? Dann guck mal hier
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
bene
Threadersteller

Dabei seit: 22.01.2005
Ort: -
Alter: -
Geschlecht: -
Verfasst Mi 14.12.2005 14:01
Titel

Antworten mit Zitat Zum Seitenanfang

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.
  View user's profile Private Nachricht senden
Backware

Dabei seit: 09.12.2004
Ort: bei Köln
Alter: 31
Geschlecht: Männlich
Verfasst Mi 14.12.2005 17:09
Titel

Antworten mit Zitat Zum Seitenanfang

wie sieht denn die datenstruktur der termine aus?
  View user's profile Private Nachricht senden
bene
Threadersteller

Dabei seit: 22.01.2005
Ort: -
Alter: -
Geschlecht: -
Verfasst Do 15.12.2005 09:41
Titel

Antworten mit Zitat Zum Seitenanfang

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).
  View user's profile Private Nachricht senden
bigdeal

Dabei seit: 14.07.2005
Ort: Aßlar
Alter: 32
Geschlecht: Männlich
Verfasst Do 15.12.2005 10:12
Titel

Antworten mit Zitat Zum Seitenanfang

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.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
tommy-p

Dabei seit: 21.01.2004
Ort: Cottbus
Alter: 31
Geschlecht: Männlich
Verfasst Do 15.12.2005 23:09
Titel

Antworten mit Zitat Zum Seitenanfang

[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
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Backware

Dabei seit: 09.12.2004
Ort: bei Köln
Alter: 31
Geschlecht: Männlich
Verfasst Fr 16.12.2005 09:23
Titel

Antworten mit Zitat Zum Seitenanfang

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 Lächel 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 Lächel

hoffe das hat auch nur einer verstanden Lächel


Zuletzt bearbeitet von Backware am Fr 16.12.2005 09:30, insgesamt 3-mal bearbeitet
  View user's profile Private Nachricht senden
 
Ähnliche Themen per PHP/MySQL: Überschrift und Text für Termine pflegen
Termine auf HP
Termine an Outlook übergeben
Outlook Termine löschen
RSS namespace für Termine
Termine online reservieren für WEB
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2, 3, 4  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.