Zur Navigation

alte Daten aus Textdatei löschen

1 uwe

Hallo,
ich habe eine Textdatei aus der alle Zeilen < heute gelöscht werden sollen. Da speichern hakt noch.
Gruss
Uwe

Die Textdatei sieht so aus:
2009.02.15|Seminar und Kurs|PKW|München|2|68496297|
2009.04.17|Frühstück mit Anke|Bahn|Nürnberg|1|79779429|
2009.05.03|Barbara 20:22 Uhr|Bahn|<a href="http://www.salzburg.at" target="_blank">salzburg.at</a>|0|32491914|
2009.03.23|Abendessen mit Christa|Flugzeug|Dresden|2|23126941|
2009.07.12|Frühstück mit Katrin|PKW|Nürnberg|0|13655513|

Mein bisheriger Code:
<HTML>
<HEAD>
 <TITLE>Termine</TITLE>
</HEAD>

<BODY bgcolor="#FFFFFF">
<?php


$datei = fopen("termine.txt", "r") ;
   $datum_jetzt = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
        
        
while (!feof($datei)) {
 $zeile = fgets($datei, 512) ;
 $eintrag = explode("|", trim($zeile)) ;
// Auslesen jetzt abgeschlossen,
// es folgt das Einsetzen in die Tabelle

        $year[0] = (int)substr($eintrag[0], 6,4);
        $month[0] = (int)substr($eintrag[0], 3, 2);
//die Variable Test erste Datumsfeld in der Textdatei
        $day[0] = (int)substr($eintrag[0], 0, 2);
        $timestamp = mktime(0,0,0,$month[0],$day[0],$year[0]);
// prüfen ob datum vorbei //
     
	if ($datum_jetzt > $timestamp){
    	//       echo ($line). " das Datum ist noch nicht vorbei <br> "; 
        }
	else{		 	
		echo "Das Datum ist vorbei  ".$zeile. "<br>"; //zu testzwecken...
		$suchstring = $zeile;
		$alter_inhalt = file($datei);
		$output = fopen($datei, "w");
		foreach($alter_inhalt as $zeile){
  			if(!preg_match('/'.date('d.m.y', $timestamp).'/i', $zeile)){
    			        fputs($output, $zeile);
  			}
		}
		fclose($output);		
	}		

	

} // Ende der while-Schleife
fclose($datei) ;?>


</BODY>
</HTML>

12.04.2009 12:36

2 Jörg Kruse

Wo genau kommst du denn nicht weiter?

Kommt das denn hin mit den Abschnitten:

        $year[0] = (int)substr($eintrag[0], 6,4);
        $month[0] = (int)substr($eintrag[0], 3, 2);
//die Variable Test erste Datumsfeld in der Textdatei
        $day[0] = (int)substr($eintrag[0], 0, 2);

... weil mit den Punkten ist eintrag[0] schon 10 Zeichen lang?

12.04.2009 14:20

3 Uwe (Gast)

Hallo Jörg,
danke für den Hinweis.
Da war ein Fehler. Aber die Berechnung jetzt jetzt immer noch nicht richtig:
<HTML>
<HEAD>
 <TITLE>Termine</TITLE>
</HEAD>

<BODY bgcolor="#FFFFFF">
<?php


$datei = fopen("termine.txt", "r") ;
   $datum_jetzt = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
   
      
        
while (!feof($datei)) {
 $zeile = fgets($datei, 512) ;
 $eintrag = explode("|", trim($zeile)) ;
// Auslesen jetzt abgeschlossen,
// es folgt das Einsetzen in die Tabelle

          $year[0] = (int)substr($eintrag[0], 0, 4);
         $month[0] = (int)substr($eintrag[0], 6, 2);
        $day[0] = (int)substr($eintrag[0], 9, 2);
   $timestamp = mktime(0,0,0,$month[0],$day[0],$year[0]);
   
    
 // echo $datum_jetzt."---".$timestamp ;
      echo "<br>";
 ## prüfen ob datum vorbei ##
     
	if ($datum_jetzt < $timestamp){
      echo $zeile."das datum ist noch nicht vorbei <br> "; 
 }
	else{		 	
		echo $zeile. "Das datum ist vorbei <br>"; //zu testzwecken...
		$suchstring = $zeile;
		$alter_inhalt = file($datei);
		$output = fopen($datei, "w");
		foreach($alter_inhalt as $zeile){
  			if(!preg_match('/'.date('d.m.y', $timestamp).'/i', $zeile)){
    			        fputs($output, $zeile);
  			}
		}
		fclose($output);		
	}		

	

} // Ende der while-Schleife
fclose($datei) ;?>


</BODY>
</HTML>

12.04.2009 15:40

4 Jörg Kruse

Lass dir mal die PHP-Fehler ausgeben, dann erhältst du z.B. diese Fehlermeldung:

Warning: file() expects parameter 1 to be string

$datei ist eine Ressource:
$datei = fopen("termine.txt", "r") ;

Benötigt wird aber der Dateiname, also "termine.txt"

12.04.2009 15:47

5 Uwe sagt Danke (Gast)

Hallo Jörg,
danke, ein anderer Fehler war noch das richtige auslesen des Datums.
So ist es richtig:
$year[0] = (int)substr($eintrag[0], 0, 4);
$month[0] = (int)substr($eintrag[0], 5, 2);
$day[0] = (int)substr($eintrag[0], 8, 2);

Diese Datumsformatierungen haben es so in sich.

Gruss
Uwe

12.04.2009 22:32

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]