Hallo
Für die Anzeige des Inhalts einer *.txt-Datenbank
mit der Bedingung, ab einem bestimmten Datum anzuzeigen
habe ich eine Schleife geschrieben, um die Einträge, die
vor dem bestimmten Datum liegen auszufiltern.
Bsp. DB:
03.09.|Di|Konzert|6 EUR|20 Uhr|Bla bla bla
16.09.|Mi|Party|2 EUR|21 Uhr|Dies und das
05.09.|Do|Party|2 EUR|22 Uhr|Jenes
15.09.|So|Konzert|13 EUR|20 Uhr|Holy Moses
...
die Termine stehen also in der txt-Datei ungeordnet drinnen.
PHP-Datei:
$datei = @file("$aktuell);
sort($datei,SORT_NUMERIC);
reset($datei);
for($b=0;$b<count($datei);$b++)
{
$datum = $datei[$b];
$datum = substr($datum,0,2); //Extraktion des Monatstages
if ($datum<=$heuer) //$heuer = heute - 2 Tage
{
array_shift($datei);
}
}
Fehler erkannt:
Wenn die erste Zeile aus dem Array gelöscht wurde,
rückt die Nächste Zeile auf den offset 0 (Zeile 0),
Die Schleife geht nun aber in die Zeile 1 und prüft
demnach nicht die "neue" Zeile 0, die ebenfalls
vor der definierten Datumsgrenze liegen könnte.
Gebe ich die gesuchten Zeilen mit:
if ($datum<=$heuer)
{
echo $datei[$b]."<br>";
}
aus, bekomme ich die optische Bestätigung, daß alle
zu löschenden Zeilen gefunden werden. In dem Moment
verändere ich ja auch nichts an dem Array.
Ich habe schon versucht, den Zeiger mit reset($datei)
in die Zeile 0 zurück zu verfrachten, jedoch bricht die
Schleife dann ab.
Nun weiß ich nicht mehr wirklich weiter.
Ich könnte eine Variable hochzählen, :
Gebe ich die gesuchten Zeilen mit:
if ($datum<=$heuer)
{
if($b==0)
{
$var=1;
}
else
{
$var+1;
}
}
um nach der Schleife mit array_splice($datei,0,$var) alle
unerwünschten Zeilen mit einem Mal zu entfernen.
Vielleicht ist das aber zu kurz gedacht, oder zu umständlich.
Vielleicht reicht ja auch eine andere Schleifenbedingung.
Ich bin an anderen Meinungen und (für mich) neuen Gedanken interessiert.
Tschüß, Auge