Unset() löscht mehrere Zeilen

Hallo.

Ich hab eine Textdatei in jede Menge Zeilen, jetzt möchte ich eine dieser Zeilen über php Löschen und zwar mit Hilfe der Funktion unset() > Leere ich den Wert und schreibs denn Array dann wieder zurück in die txt-datei. Jedoch löscht das unset() nicht nur eine Zeile sondern auch mal 2 bis sogar 3 auf einmal. Warum das??
Im untenstehenden Code habe ich ein bisschen experimentiert.

<?php $datei = "../kalender/file.txt"; // Name der Datei<br /> $array = file($datei); // Datei in ein Array einlesen
 if (isset($\_GET["del"]))
 {
 $delitem = $\_GET["del"];
 echo '

**Eintragnummer '.$delitem.' erfolgreich gelöscht!  
  
';  
 echo '[Kalender verwalten](cal-show.php)';  
 if (is\_numeric($delitem))  
 {  
 unset($array[$delitem]);  
 }  
 }  
  
reset($array);  
unlink($datei);  
  
 $fp = fOpen ($datei , "w+"); // Datei öffnen  
 for ($j=0;$j**  

Hallo Sebastian,

sicher das mehrere Zeilen geloescht werden?
Bitte nicht verwechseln mit Zeilen, die durch automatischen Zeilenumbruch beim Anzeigen erzeugt werden verwechseln.

Weiterhin ist deine Code zum Datei schreiben nicht korrekt. Hier eine Moeglichkeiten dies zu vereinfachen/zu korrigieren:

<?php $datei = "../kalender/file.txt"; // Name der Datei
$array = file($datei); // Datei in ein Array einlesen if (isset($\_GET["del"]) && is\_numeric($\_GET["del"])) { $delitem = $\_GET["del"]; echo ' **Eintragnummer'.$delitem.' erfolgreich gelöscht! '; echo '[Kalender verwalten](cal-show.php)'; $fp = fopen ($datei , 'w'); // Datei schreiben, wird automatisch ueberschrieben while ( list( $linenr, $linetxt ) = each($array) ) { if ( $linenr != $delitem ) { fwrite( $fp, $linetxt ); } } fclose($fp) } ?\>** Gruss Stefan

Hallo Stefan.

sicher das mehrere Zeilen geloescht werden?

Ja da bin ich mir zu 100% sicher…

Bitte nicht verwechseln mit Zeilen, die durch automatischen
Zeilenumbruch beim Anzeigen erzeugt werden verwechseln.

Weiterhin ist deine Code zum Datei schreiben nicht korrekt.
Hier eine Moeglichkeiten dies zu vereinfachen/zu korrigieren:

<?php : $datei = "../kalender/file.txt"; // Name der Datei
$array = file($datei); // Datei in ein Array einlesen if (isset($\_GET["del"]) && is\_numeric($\_GET["del"])) { $delitem = $\_GET["del"]; echo ' **Eintragnummer'.$delitem.' erfolgreich gelöscht! '; echo '[Kalender verwalten](cal-show.php)'; $fp = fopen ($datei , 'w'); // Datei schreiben, wird automatisch ueberschrieben while ( list( $linenr, $linetxt ) = each($array) ) { if ( $linenr != $delitem ) { fwrite( $fp, $linetxt ); } } fclose($fp) } ?\>**

Hab jetzt deine Variante übernommen und jetzt klappts, er löscht nicht mehr als eine Zeile, SUPER, danke dir vielmals.

Gruss,
Sebastian