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