Guten Tag.
Die Problematik ist folgende :
Ich habe ein script 1.php, auf welchem jede Linie einer Textdatei in ein array gelesen und mit einer Textbox vorne dran ausgegeben wird. Nun soll man Linien anChecken können, die durch script 2.php dann in einer .txt gelöscht werden.
Problem I : Die online verbreitete Funktion deleteLineFromFile funktioniert soweit wunderbar, wurde von mir in eine foreach-Schleife gepackt und soll für jedes Element im Array der checkboxen die Line mit der selben nummer in der txt löschen. Löscht aber immer nur das erste element im array.
Problem II : Wird der letzte Eintrag der Reihe gelöscht, löscht die Funktion zwar den Inhalt der dazugehörigen Textzeile, jedoch den Zeilenumbruch \n nicht.
Function deleteLineFromFile in 2.php
(parameter $text momentan überflüssig; für textbasierte Suche nach einer Zeile):
Die checkboxen im echo der 1.php sind mit name=asdf[] betitelt und tragen fortlaufende values. Das ausgegebene array ist soweit völlig korrekt und trägt - wenn geechoed - tatsächlich jede der angehakten Zeilennummern.
Weiterer Auszug aus 2.php :
Ich wäre für jede Hilfe sehr verbunden und danke vorab schonmal für Eure Zeit,
fage
Die Problematik ist folgende :
Ich habe ein script 1.php, auf welchem jede Linie einer Textdatei in ein array gelesen und mit einer Textbox vorne dran ausgegeben wird. Nun soll man Linien anChecken können, die durch script 2.php dann in einer .txt gelöscht werden.
Problem I : Die online verbreitete Funktion deleteLineFromFile funktioniert soweit wunderbar, wurde von mir in eine foreach-Schleife gepackt und soll für jedes Element im Array der checkboxen die Line mit der selben nummer in der txt löschen. Löscht aber immer nur das erste element im array.
Problem II : Wird der letzte Eintrag der Reihe gelöscht, löscht die Funktion zwar den Inhalt der dazugehörigen Textzeile, jedoch den Zeilenumbruch \n nicht.
Function deleteLineFromFile in 2.php
(parameter $text momentan überflüssig; für textbasierte Suche nach einer Zeile):
PHP-Code:
function deleteLineFromFile($filename, $text = "", $line = -1)
{
$result = true;
if (! strlen ($text) && $line == -1)
$result = false;
else
{
if (file_exists($filename))
{
$array = file($filename);
// Zeilennummer?
if ($line != -1)
{
if ($line < count($array))
{
unset($array[$line]);
$array = array_values($array);
}
else
$result = false;
}
else
{
if (strlen ($text))
{
$count = -1;
foreach ($array as $value)
{
$value = trim ($value);
if ($text == $value)
{
$count++;
unset($array[$count]);
$array = array_values($array);
break;
}
else
$count++;
}
}
else
$result = false;
}
}
else
$result = false;
}
if ($result = true)
{
$fp = fopen ($filename, "w");
if ($fp)
{
foreach ($array as $value)
fputs($fp, $value);
fclose ($fp);
}
else
$result = false;
}
return $result;
}
Weiterer Auszug aus 2.php :
PHP-Code:
$asdf = $_POST['asdf'];
foreach ($asdf as $chkbox) {
deleteLineFromFile("myfile.txt", $text="", $chkbox); }
fage
Kommentar