Nächste Termin anzeigen
drv
- datenbank
0 1UnitedPower0 drv0 1UnitedPower
Hallo zusammen, ich bin gerade dran, für unseren Kulturverein, ein PHP und MySQL basiertes Management zu schreiben. Nun habe ich in der DB viele Termine.
Ich würde gerne immer den letzten Termin für noch einen Tag anzeigen lassen, danach den nächsten. Sollten zwei Termine aufeinander folgen, soll trotzdem nach dem oben beschriebenen Thema verfahren werden, also der letzte Termin angezeigt werden. Und wichtig wäre auch noch, das wenn kein bevorstehender Termin mehr da ist, immer der letzte angezeigt wird.
Mit mehreren Abfragen und der Hilfe von PHP ist das kein Problem, gibt es denn hierfür eine DB-basierte Möglichkeit?
Vielen Dank für Eure Hilfe
DRV
Meine Herren,
Mit mehreren Abfragen und der Hilfe von PHP ist das kein Problem, gibt es denn hierfür eine DB-basierte Möglichkeit?
Mit Sicherheit, welches Datenbanksystem benutzt du? Wie sieht die Datenbankstruktur aus (im Falle von MySQL zum Beispiel die Tabellen)?
Hi,
erstmal vielen Dank für die Antwort....
Bisher ist die Struktur relativ einfach aufgebaut (Anpassung werde ich denke ich nachher selber hinbekommen, muss ja noch nen bissel Anreiz bleiben ;-) ):
ID | quarter_ID | Title | start_date
Id - auto_increment
quarter_ID - foreign key auf übergeordnete Tabelle, zuordnung zu Quartal
Title - selbsterklärend
start_date - als Date-Field
hoffe das ist ausreichend.
1000 Dank
DRV
Meine Herren,
Id - auto_increment
quarter_ID - foreign key auf übergeordnete Tabelle, zuordnung zu Quartal
Title - selbsterklärend
start_date - als Date-Field
Der DATE-Typ erlaubt es nicht Uhrzeiten zu speichern, wenn die Uhrzeit für einen Termin relevant ist, müsstest du auf DATETIME oder TIMESTAMP umrüsten. Gibt es außerdem kein end_date für Termine?
hoffe das ist ausreichend.
Noch nicht ganz, jetzt nochmal zur Geschäftslogik:
Möchtest du, dass immer der letzte Termin an einem bestimmten Tag angezeigt wird?
Oder möchtest du bei mehrtägigen Terminen den letzten Tag ermitteln?
Deine Beschreibung war ziemlich in dem Punkt ziemlich wirr.
Hi,
es wird niemals mehr als einen Termin pro Tag geben, die Zeiten sind immer die gleichen.(Klar kann es später auch andere Zeiten geben, ist aber erstmal irrelevant). Es gibt auch ein end-date für jeden Termin, aber auch das möchte ich hier nicht weiter erwähnen, nen bissel was möchte ich ja auch selber erledigen/erarbeiten. Mir fehlt nur überhaupt nen Ansatz, daher mein Thread.
Ich möchte immer einen Tag lang den letzten Termin anzeigen lassen, danach immer den nächsten.
Angenommen der Termin wäre immer Samstag, so möchte ich Sonntags noch den vergangenen Termin anzeigen, Montags soll dann der nächste angezeoigt werden.
Danke für Deine Mühe
Meine Herren,
Angenommen der Termin wäre immer Samstag, so möchte ich Sonntags noch den vergangenen Termin anzeigen, Montags soll dann der nächste angezeoigt werden.
Ah, das ist verständlicher ausgedrückt.
DATEDIFF(
start_date, CURDATE() )
Damit erhälst du die Anzahl der Tage, die zwischen dem Termin-Beginn und dem aktuellen Datum liegen sind.
Ein negativer Wert würde bedeuten, dass der Termin in der Vergangenheit liegt, ein positiver Wert steht entsprechend für einen zukünftigen Termin.
Liste aller Date-Funktionen: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
Hoffe das hilft dir weiter, ich überlasse dich erstmal dem Selbststudium, wenn du weitere Hilfe benötigst frag nur.
Hi,
mach mal bitte n Beispiel mit Beispieldaten in der Tabellenform und Beispielergebnissen. Was ist der Eingabewert? Das aktuelle Datum (also [heute] bzw. [jetzt])?
Angenommen der Termin wäre immer Samstag, so möchte ich Sonntags noch den vergangenen Termin anzeigen, Montags soll dann der nächste angezeigt werden.
Das klingt aber nach "wochenweiser" Logik?!
Der zuletzt vorangegangene Termin fuer ein beliebiges Datum ist der erste Termin, dessen Datum kleiner als der Eingabewert ist, absteigend sortiert. In SQL Prosa etwa:
WHERE start_date < $eingabe ORDER BY start_date DESC
Der naechstfolgende Termin ist das Gegenteil, also etwa
WHERE start_date > $eingabe ORDER BY start_date ASC
Beide Abfragen lassen sich (sicherlich unter mySQL)
Cheers, Frank
Tach!
Der DATE-Typ erlaubt es nicht Uhrzeiten zu speichern, wenn die Uhrzeit für einen Termin relevant ist, müsstest du auf DATETIME oder TIMESTAMP umrüsten.
TIMESTAMP-Spalten sind ganz speziell für das Festhalten des aktuellen Zeitpunkts gedacht und sind deshalb auch mit der entsprechenden Magie ausgestattet, sich selbst mit der aktuelle Zeit auszufüllen oder sie beim Update zu ändern. TIMESTAMP sollten deshalb nicht für die Speicherung von beliebigen Datums- und Zeitwerten missbraucht werden, auch nicht wenn man diese Magie ausschaltet.
dedlfix.