Hallo
ich habe eine Textdatei mit folgendem Inhalt:
01.02.07|text1
02.02.07|text2
05.03.07|text3
09.04.07|text4so nun soll mit php immer das ausgehend vom aktuellen datum de nächsten 3 ereignisse angezeigt werden.
$datei = file('datei.txt');
foreach(datei as $zeile);
{
$zeile = trim($zeile);
temp_arr = explode('|',$zeile);
echo "datum $zeile[0] und text $zeile[1]";
}
Zuerst: dein Quellcode hat mehrere Fehler. In die Zeile mit foreach gehört _kein_ Semikolon, da die folgenden Anweisungen zur Schleife, die in dieser Zeile definiert wird, gehören. Auch dein "temp_arr" gibt es nicht so, wie du es gern hättest. Für eine Variable fehlt das Dollarzeichen, zudem benutzt du es nicht einmal (echo "datum $zeile[0] ...).
aber wie bekomm ich das mit dem datum hin?
Dazu musst du das gespeicherte Datum mit dem aktuellen oder einem anderen gewünschten Datum vergleichen. Um das ganz einfach zu machen, solltest du das Format des Datums ändern. Mit dem Format JJJJMMTT, z.B. 20070305 für den 05.03.2007, gehst du sicher, dass bei einer Sortierung die Reihenfolge der Daten immer richtig ist. Nur zur Anzeige der Daten sollte das Datum wieder umformatiert werden.
Mit date("Ymd"); holst du dir das aktuelle Datum (im von mir präferierten Format). Mit diesem vergleichst du $zeile[0], welches dann natürlich auch dieses Format haben muss, auf >= (größer, gleich).
$datei = file('datei.txt');
$jetzt = date("Ymd");
$counter = 0;
$ergebnis = array();
foreach(datei as $zeile)
{
$zeile = trim($zeile);
$zeile = explode('|',$zeile);
if ($zeile[0]>=$jetzt)
{
# Bedingung trifft auf Zeile zu, Zaehler um 1 heraufsetzen.
$counter++;
# eventuell hier das Datum umformatieren
# (hier mit selbstgeschriebner Funktion)
$zeile[0] = formatiere_datum($zeile[0]);
$ergebnis[] = "datum $zeile[0] und text $zeile[1]";
if ($counter==2)
{
# Wenn $counter den Wert 2 hat, liegen 3 Ergebnisse vor (0,1,2).
# Die Schleife wird mit "break" verlassen.
break;
}
}
}
if (!empty($ergebnis))
{
# Die Variable $ergebnis enthaelt Daten
# (Wenn kein Datensatz der Bedingung entspricht, wuerde $ergebnis leer sein)
foreach ($ergebnis as $bla)
{
echo $bla;
}
}
oder erstmal wäre mir auch geholfen, wenn ich wüsste, wie ich nur die ersten 3 zeilen der txt augeben.
vielen dank
cr
Tschö, Auge
Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
(Victor Hugo)
Veranstaltungsdatenbank Vdb 0.1