Ausblenden von Daten älter als Heute.
Matschauge
- php
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?
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
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".
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
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
[...] Siechref [...]
Also, den nehme ich jetzt persönlich !!!11elf
Siechfred
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
( ) 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
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 />";
}
?>
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