Kalender mit Timestamps erzeugen

wal

Erfahrenes Mitglied
Hallo,

ich bin gerade dabei einen kleinen Kalender zu machen. Dieser Kalender speichert in einer MySQL Datenbank das eingetragen Datum, die Uhrzeit als Timestamp ab. Ausserdem wird noch ein Betreff und ein Ort abgespeichert.

Ich möchte als Ausgabe nur die nächsten fünf Termine (Tage) angezeigt bekommen.

Das Problem was sich mir nun stellt ist, wie erzeuge ich diese Ausgabe, welche mir die Termine an einem Tag zuerst zusammenfasst und dann nur fünf Tage anzeigt?

Ich habe die Ausgabe soweit fertig, es werden zum Beispiel 3 Tage gezeigt. Das Problem dabei ist, das zuvor nicht die Termine an einem Tag zusammengelegt werden. Dies bedeutet: Habe ich zwei Termine an einem Tag, bekomme ich bei 3 Tagen nur zwei Tage angezeigt!

Hier mal ein Beispiel:
Eingaben - werden als Timestamp in der DB abgelegt
Montag, 23.05.2005 08:15 - 09:00 Frühstück, Tiffany
Montag, 23.05.2005 10:00 - 12:00 Kalender programmieren, zu Hause
Dienstag, 24.05.2005 17:00 - 20:00 Super Streifen, Kino
Donnerstag, 26.06.2006 21:00 - 24:00 Tutorials.de durchlesen, am PC

Ausgabe ist momentan (3 Ausgaben):
Montag, 23.05.2005 08:15 - 09:00 Frühstück, Tiffany
Montag, 23.05.2005 10:00 - 12:00 Kalender programmieren, zu Hause (Problem, sollte eigentlich zum ersten Montag hinzugezählt werden)
Dienstag, 24.05.2005 17:00 - 20:00 Super Streifen, Kino

Erwünschte Ausgabe sollte aber so ausschauen (3 Ausgaben, da Montag zusammengefasst wurde):
Montag, 23.05.2005 08:15 - 09:00 Frühstück, Tiffany | 10:00 - 12:00 Kalender
programmieren, zu Hause

Dienstag, 24.05.2005 17:00 - 20:00 Super Streifen, Kino
Donnerstag, 26.06.2006 21:00 - 24:00 Tutorials.de durchlesen, am PC

Ich habe nun auf die Formatierung verzichtet, sollte aber trotzdem klar werden. Das Problem ist, dass ich jeden Datensatz in die DB schreibe, aber wie finde ich die Timestamp mit dem gleichen Datum - unabhängig der Zeitangaben?

Ich bräuchte nur einen Tipp zur Sortierung. Dein Eingabe, sowie die Ausgabe stehen bereits - ausser es geht anders.

Wenn mir jemand da einen Tipp geben würde oder sagen kann, ob dies der richtige Weg ist, wäre super.

Ich bedanke mich schon mal für eure Hilfen und Tipps.
 
Zuletzt bearbeitet:
wal hat gesagt.:
Ich habe nun auf die Formatierung verzichtet, sollte aber trotzdem klar werden. Das Problem ist, dass ich jeden Datensatz in die DB schreibe, aber wie finde ich die Timestamp mit dem gleichen Datum - unabhängig der Zeitangaben?

Ich bräuchte nur einen Tipp zur Sortierung. Dein Eingabe, sowie die Ausgabe stehen bereits - ausser es geht anders.
Also so wie ich Dich verstanden hab, willst Du für die nächsten 5 Tage die Datensätze aus der Datenbank abfragen und dann, gruppiert nach Datum darstellen? Und dabei soll es keine Rolle spielen, ob Du für einen Tag 1, 10 oder 100 Einträge hast, richtig?

Das is doch ganz einfach: Du selektierst aus der Datenbank alle Spalten, wo das Datum in Deinem 5-Tage-Zeitraum liegt. Hierzu gibts ja schöne MySQL-Funktionen für.

So, und bei der Ausgabe machst Du folgendes:

PHP:
<?php

$rsDates        = mysql_query("SELECT ... FROM ...");
$current_date   = false;

while($data = mysql_fetch_row($rsDates)) {

    if($current_date != $data['stamp_event']) {
        echo 'Einträge für das Datum: '.$data['event_stamp'].'<br />';
    }
    echo $data['event_description'].'<br />';
    $current_date = $data['stamp_event'];
}

?>
Nachdem Du also die Datenbankabfrage durchgeführt hast, lässt Du bei jedem Schleifendurchlauf prüfen, ob das Datum in der aktuellen Zeile aus dem Recordset mit dem "Tempörären"-Datum, welches Du nach jedem Durchlauf zwischenspeicherst, identisch ist. Falls dies nicht der Fall ist, gibts Du einfach das "neue" Datum aus. Sind die beiden Werte identisch, gibst Du einfach die Daten, die zu diesem Datum gehören, aus.

So in etwa sollte das funktionieren.
 
Hi Chino,

vielen Dank für deine Hilfe, du hast es genau richtig verstanden.
Ich habe deine Idee aufgegriffen und endlich "die Bäume im Wald erkannt" :p :-)

Es hat zwar noch einen Moment gedauert, bis ich das so umgesetzt bekam aber nun funktioniert es! ;)

Vielen Dank nochmals.
 
Auch wenn das Problem gelöst ist, ich hätte mit der Datefunktion geprüft, ob die Dati (richtig gesteigert?) zusammengehören.
Aber Trotzdem Danke, der Thread hat mir dennoch geholfen, meinen Kalender zu Perfektionieren :-)
 
Zurück