tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
839
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von wal
    wal wal ist offline Mitglied Brokat
    Registriert seit
    Oct 2003
    Ort
    Nähe Frankfurt (Hessen)
    Beiträge
    274
    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.
    Geändert von wal (28.10.04 um 15:48 Uhr)
     
    Viele Grüße
    Wolfgang

  2. #2
    Registriert seit
    Dec 2001
    Ort
    Köln
    Beiträge
    796
    Zitat Zitat von wal
    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-Code:
    <?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.
     
    You want me to be, something I can never ever be!

  3. #3
    Avatar von wal
    wal wal ist offline Mitglied Brokat
    Registriert seit
    Oct 2003
    Ort
    Nähe Frankfurt (Hessen)
    Beiträge
    274
    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"

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

    Vielen Dank nochmals.
     
    Viele Grüße
    Wolfgang

  4. #4
    Registriert seit
    Feb 2004
    Ort
    Leinfelden-Echterdingen
    Beiträge
    781
    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
     
    Bitte dran denken!
    Wenn eure Frage geklärt ist, markiert nach eurer Antwort den Thread als erledigt und bewertet die Antworten

Ähnliche Themen

  1. Antworten: 25
    Letzter Beitrag: 01.11.10, 23:42
  2. timestamps und Monatsanzeige?!
    Von OmegaTCU im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 07.05.07, 22:44
  3. [Funktionssammlung] Timestamps
    Von flokli im Forum PHP
    Antworten: 0
    Letzter Beitrag: 02.07.06, 15:38
  4. Antworten: 2
    Letzter Beitrag: 20.12.05, 09:57
  5. Vergleich 2er Timestamps
    Von Philipp_Frank im Forum PHP
    Antworten: 2
    Letzter Beitrag: 04.10.05, 15:21