atero: "Nächster Termin" aktualisieren

Hallo,

ich habe eine Tabelle mit Terminen die ungefähr so aussieht:

03.05.2008 Event0
10.05.2008 Event1
17.05.2008 Event2
24.05.2008 Event3
...

Die Daten sind nur in der Tabelle, ich verwende keine Datenbank.
Jetzt hätte ich gerne so etwas:

Nächster Termin:
10.05.2008 Event1

Es soll also das Datum und der Name des nächsten Termins angezeigt werden.

Das aktuelle Datum herausfinden sollte mit Javascript kein Problem sein, Text in ein HTML Dokument einfügen auch nicht.
Nur wie ermittle ich den nächsten Termin, gibt es hier eine sinnvolle Möglichkeit dies mit Javascript zu realisieren (eben wenn möglich ohne Datenbank) ?

Meine erste Idee war diese hier: Tabelle von oben nach unten durchgehn, Daten auslesen und so ordnen: JahrMonatTag, also 20080503. Jetzt das aktuelle Datum mit < bzw > vergleichen und so die Zeile herausfinden die passt. Klappt das so oder gibt es bessere Wege?

Viele Grüße
atero

  1. Hi,

    Meine erste Idee war diese hier: Tabelle von oben nach unten durchgehn, Daten auslesen und so ordnen: JahrMonatTag, also 20080503. Jetzt das aktuelle Datum mit < bzw > vergleichen und so die Zeile herausfinden die passt. Klappt das so oder gibt es bessere Wege?

    So ähnlich hätte ich jetzt auch gemacht. Vielleicht hälst du dir ja auch einen kleinen Datastore in JavaScript, von dem aus du die Tabelle aufbaust? und in dem du richtige Date Objekte drin verwaltest.
    Mit der Stringdarstellung von Objekten (hier das Datum) zu hantieren ist immer etwas unschön, aber hier wohl doch das angebrachteste.

    Ich würde EINE schleife machen, und mir immer die Differenz zu "heute" geben lassen. Ist sie kleiner als die alte Differenz, ist der Termin näher dran.
    Am Ende hast du den nächsten Termin.
    Evtl immer noch den rowIndex speichern oder eben direkt das Event.
    Die Differenz würde ich entsprechend groß initialisieren. Number.MAXVALUE oder so.

    Gruß
    Christian

    1. Hi Christian,

      danke für die Tipps, dann werd ich das wohl so probieren. Hatte gehofft es gibt vielleicht irgendeine einfachere bzw elegantere Lösung. Da mir aber auch nichts einfällt muss ich da wohl durch :)
      Bei den Datensätzen in Javascript sehe ich den Nachteil, dass ich diese immer wieder anlegen muss. Ich würde das jetzt gerne einmal programmieren und wenn es neue Termine gibt einfach eine aktuelle Tabelle mit Terminen einfügen. Deshalb ist es denk ich einfacher die Daten nur in Tabellenform zu belassen, oder?

      Gruß
      atero

      1. Hi,

        danke für die Tipps, dann werd ich das wohl so probieren. Hatte gehofft es gibt vielleicht irgendeine einfachere bzw elegantere Lösung. Da mir aber auch nichts einfällt muss ich da wohl durch :)

        Also aufwändig ist das nun wirklich nicht... Ein 5-10 Zeiler ;-)

        Bei den Datensätzen in Javascript sehe ich den Nachteil, dass ich diese immer wieder anlegen muss. Ich würde das jetzt gerne einmal programmieren und wenn es neue Termine gibt einfach eine aktuelle Tabelle mit Terminen einfügen. Deshalb ist es denk ich einfacher die Daten nur in Tabellenform zu belassen, oder?

        Verstehe es nicht ganz. Ob du nun einen Datensatz in ein Array einfügst etwa so:

        MyDataStore.push(
        {
          termin: new Date(2008, 2, 2),
          event: "Event0"
        });

        oder HTML schreibst:

        <tr><td>02.02.2008</td><td>Event0</td></tr>

        ist doch egal.

        Deine Antwort klingt auch so, als wolltest du für jeden Termin eine neue Tabelle machen... ist m.E. unsinnig. Lieber neue Zeilen.

        Vorteil der Tabellenform ist ganz einfach, dass die Daten im HTML stecken, dass heiißt angezeigt werden wenn JS ausgeschaltet ist, und auch durch Suchmaschinen erfasst werden.

        Gruß!

        1. Hi,

          gebe dir Recht, das macht keinen Unterschied.
          Ich wollte nicht für jeden Termin eine neue Tabelle anlegen sondern nur all Jahr die Tabelle so zu sagen austauschen (Termine vom alten Jahr raus, neue Termine rein).
          Das mit dem ausgeschaltenen JS ist aber ein gutes Argument, werde es jetzt zunächst mal mit der Daten-in-Tabelle Variante probieren.

          Viele Grüße
          atero