Textdatei auswerten

dragonlord

Erfahrenes Mitglied
Hallo zusammen,

ich komme mal wieder nicht weiter. Hab schon rumprobiert ohne ende.
Ich habe eine Tabelle da stehe verschiedenen Anzeigen drin.
Damit man die Anzeigen löschen kann habe ich mir folgendes gedacht:

Jede Anzeige hat eine eigene ID. Beim klicken auf den Löschbutton wird die
Datei Admin.php aufgerufen und die ID der Anzeige als Variable $id mit übergeben.
Also z.b. admin.php?id=2

Erst mal vorab der Aufbau der Textdatei:

id|||Name|||Status|||balabla

Also die ID steht immer ganz vorne in der Zeile.

Ich will also das beim Klicken auf admin.php die Textdatei durchgegangen wird.
Die Datei wird erstmal zeilenweise in ein Array gespeichert.
Dann soll jeden Zeile nochmal in ein Array gespeichert werden. Damit ich den ersten Block (|||) jeder zeile auf die ID hin übeprüfen kann. Wenn die ID = mit der übergebenen
Variable $id ist soll diese Zeile dann gelöscht werden.

Hier mal meim Code-Versuch zum überprüfen der Zeilen:
PHP:
$lines = file("anzeigen.txt"); // ganze Datei Zeilenweise in ein Array
$zeile = explode('|||', $lines); 
for ($zerhackt = 0; count($zeile) ; count($zeile) == count($zeile)+1) {
$i = explode('|||', $zeile);
echo "$i[0]";}

Das Klappt aber hinten und vorne nicht. Kann jemand helfen?

PS. Das ganze zur veranschaulichung:
http://www.tuerlingedv.de/kleinanzeigen/anzeige.html
 
PHP:
if (!function_exists("terminatezeile")) { 
function terminatezeile($dokument,$zeile) 
{ 
if(file_exists("$dokument") && is_file("$dokument")){ 
$datei=file("$dokument");
for($i=0;$i<count($datei) - 1;$i++){
if ($i != $zeile) { $newdatei .= $datei[$i];
}
$datei=fopen("$dokument","w");
fwrite($dokument,"$newdatei");
fclose($dokument);
return true;
} 
else { echo "Fehler!"; exit; } 
} 
}

dieses bindest du in deiner admin ein!

und falls du bsp Zeile 1 von 1.txt löschen willst machst das dann so:

PHP:
terminatezeile("1.txt",1);
bzw.
PHP:
terminatezeile("1.txt",$ID);
Achtung Dokument fängt immer mit Zeile 0 an!
Also die erste Zeile ist Zeile 0!
 
Zuletzt bearbeitet von einem Moderator:
Das mit dem löschen weiss ich wie das geht. Ich will ja nicht z.b. Zeile 3 löschen sondern die Zeile die als ID die 3 hat.
Die Textzeilen können ja auch durcheinander stehen.

z.b

2|||Donald|||Blabla blubb
4|||Dagobert|||Dies und das
7|||Mikey Maus|||Hallo bla bla
3|||James Bond|||Gerührt und nicht bla bla
 
Zuletzt bearbeitet:
Hallo,

ich mag es zwar nicht, fertige Lösungen zu posten, aber heute ist Sonntag.

PHP:
<?php
$id = 3255;
$datei = 'dat.txt';
$newline = "\n"; // kann auch \r\n sein^^
$replacement = FALSE;

if (file_exists($datei)) {
	$lines = file($datei); // ganze Datei Zeilenweise in ein Array
}

if (isset($lines) && is_array($lines)) {
	foreach ($lines AS $key => $line) {
		if (preg_match("/^".$id."\|\|\|.*/siU", $line)) {
			unset($lines[$key]);
			$replacement = TRUE;
			break;
		}
	}
}

if ($replacement == TRUE) {
	if ($fp = fopen($datei, "w")) {
		flock($fp, 2);
		// Newline sollte nicht noetig sein, da bereits in jeder Zeile enthalten
		// ansonsten anstatt "" $newline
		fputs($fp, implode("", $lines));
		flock($fp, 3);
		fclose($fp);
	}
}
?>

mfg Bloddy
 
Zurück