Matschauge: Ausblenden von Daten älter als Heute.

Hallo,

ich schreibe meine Daten in eine Textdatei, so auch das Datum im Format Tag/Monat/Jahr.
Nun habe ich es geschafft die Daten nach dem Datum zu sortieren:

<?php

function sorter ($a, $b)
{
$c=implode('.', array_reverse(explode('.', $a[0])));
$d=implode('.', array_reverse(explode('.', $b[0])));

if ($c == $d) return 0;
return ($c < $d) ? -1 : 1;
}

$datei = "daten.txt"; // Name der Datei
$array = file($datei); // Datei in ein Array einlesen

usort($array, 'sorter');

for ($i = 0; $i < count($array); $i++) {
$array[$i] = explode(";" , $array[$i]);
for ($a = 0; $a < 6; $a++) { // 4 Tabellenspalten
echo "\n" . $array[$i][$a] . " \n";
}
echo "<br />";
}
?>

Aber wie kann ich Einträge älter als der heutige Tag ausbleden?

  1. hi,

    Aber wie kann ich Einträge älter als der heutige Tag ausbleden?

    In dem du die Datümer in ein sortierbares Format bringst (Tag/Monat/Jahr eignet sich relativ schlecht dazu - sowas wie YYYYMMDD lässt sich einfacher sortieren, schon mit normalen Zahlenvergleichen), und dann in deiner Ausgabeschleife jeweils vor dem Ausgeben abfragst, ob das Datum des aktuellen Satzes größer als das heutige ist.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hi

      In dem du die Datümer in ein sortierbares Format bringst (Tag/Monat/Jahr eignet sich relativ schlecht dazu - sowas wie YYYYMMDD lässt sich einfacher sortieren, schon mit normalen Zahlenvergleichen), und dann in deiner Ausgabeschleife jeweils vor dem Ausgeben abfragst, ob das Datum des aktuellen Satzes größer als das heutige ist.

      Das klingt intersannt, aber dann muss ich beim Auslesen ja auch bei der Eingabe/Ausgabe wieder das Datum drehen damit auch die Nutzer damit zurecht kommen.
      Da wüsste ich nicht wie!? Gibt es denn keine Möglichkeit mit date("d.m.y"); / 03.10.07
      zu arbeiten? Ich bin doch ein "bloody User".

      1. Das klingt intersannt, aber dann muss ich beim Auslesen ja auch bei der Eingabe/Ausgabe wieder das Datum drehen damit auch die Nutzer damit zurecht kommen.

        Besser wäre es, in der Textdatei Zeitstempel zu speichern, die du mit Hilfe von date entsprechend des gewünschten Ergebnisses (zum Sortieren oder als Ausgabe für den User) formatierst. Ansonsten müsstest du dein Datum mittels mktime in einen solchen Zeitstempel umwandeln, bevor du es formatieren kannst.

        Siechfred

        --
        Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
      2. hi,

        Das klingt intersannt, aber dann muss ich beim Auslesen ja auch bei der Eingabe/Ausgabe wieder das Datum drehen damit auch die Nutzer damit zurecht kommen.

        Siehe Siechref - nimm Timestamps.
        Die brauchst du nicht zu "drehen", sondern nur für die Ausgabe "formatieren".

        Gibt es denn keine Möglichkeit mit date("d.m.y"); / 03.10.07 zu arbeiten?

        Natürlich gibt's die - wird nur nicht das sein, was du willst.

        Denn es ist sowohl "08.01.1954" größer als "03.10.07", wie auch "01.12.2015" kleiner als "03.10.07" - weil eben von links nach rechts, Zeichen für Zeichen verglichen wird bei einem normalen Stringvergleich.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. [...] Siechref [...]

          Also, den nehme ich jetzt persönlich !!!11elf

          Siechfred

          --
          Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
          1. hi,

            [...] Siechref [...]

            Also, den nehme ich jetzt persönlich !!!11elf

            Ich hatte kurz überlegt, ob ich dein Posting auch noch verlinken sollte - so muss mir irgendwie das "href" in den Sinn gekommen sein, womit mich dann Freud unbeabsichtigt gleich deinen Namen verunstalten lies.

            ( ) Erklärung als Entschuldigung akzeptiert.
            ( ) Wir sehen uns morgen um Zehn unter der alten Eiche.

            Your chioce :-)

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. ( ) Wir sehen uns morgen um Zehn unter der alten Eiche.

              Du weißt, was das letzte Mal passiert ist? Und du weißt, warum Bio seither nur noch höchst selten und zumeist während meiner Abwesenheit hier auftaucht? Das gilt übrigens auch für einen gewissen Tim.

              Sag also nicht, dass du nicht gewarnt warst!

              Siech*vbg*fred

              --
              Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
        2. Hi,

          so ich habe das ganze nun mit Timestamp konfiguriert, ich trage somit jetzt Timestamps ein (siehe Quelltext) die Frage ist nur wie lese ich sie wieder aus in einen "normalen" Wert:

          #schreibe.php
          <?php
           // Variablen einlesen
           $ort = $_POST['ort'];
           $veran = $_POST['veran'];
           $art = $_POST['art'];
           $kom = $_POST['kom'];
           $url1 = '<a href="';
           $url2 = '">';
           $url3 = '</a>';

          $datum = $_POST['datum'];
           $time = $_POST['sendezeit'];
           $datum_werte = explode(".",$datum);
           $zeit_werte = explode(":",$time);
           $timestamp = mktime((int)$zeit_werte[0], $zeit_werte[1], 0, $datum_werte[1], $datum_werte[0], $datum_werte[2]);

          $text = "$timestamp ; $art ; $url1$ort$url2$veran$url3 ; $kom \n";

          $dateiname = "events.txt"; // Name der Datei
           $fp = fopen ($dateiname , "a+"); // Datei öffnen
           fwrite ($fp , $text); // Dateiinhalt in die Datei schreiben
           fclose ($fp); // Datei schließen

          echo "<center><br><br><br><br>Tatort eingetragen!<br> <a href="events.php">Weiter zur Übersicht...</a></center>";
          ?>

          #events-auslesen.php
          <?php

          function sorter ($a, $b)
          {
          $c=implode('.', array_reverse(explode('.', $a[0])));
          $d=implode('.', array_reverse(explode('.', $b[0])));

          if ($c == $d) return 0;
          return ($c < $d) ? -1 : 1;
          }

          $datei = "events.txt"; // Name der Datei
          $array = file($datei); // Datei in ein Array einlesen

          usort($array, 'sorter');

          for ($i = 0; $i < count($array); $i++) {
          $array[$i] = explode(";" , $array[$i]);
          for ($a = 0; $a < 6; $a++) { // 4 Tabellenspalten
          echo "\n" . $array[$i][$a] . " \n";
          }
          echo "<br />";
          }
          ?>

          1. hi,

            ich trage somit jetzt Timestamps ein (siehe Quelltext) die Frage ist nur wie lese ich sie wieder aus in einen "normalen" Wert:

            Ich dachte, date() kennst du bereits?

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }