Zeile aus Datei löschen

TS-JC

Erfahrenes Mitglied
also, ich habe eine Datei mit mehreren Einträgen

eintrag1
eintrag2
eintrag3
...


jetzt übergebe ich den inhalt einer Zeile (z.B. eintrag2) an eine 2. Seite und möchte, dass sie da gelöscht wird

PHP:
$datei = "datei.txt";
$fp = fopen($datei, "r");

while($zeile = fgets($fp, 20)){
    
    if($zeile != $loeschen){  
    $entry .= $zeile;
    }
}

fclose($fp);

$fp = fopen($datei, "w");
fputs($fp, $entry);
fclose($fp);

^^ das habe ich aus nem anderen Thread, aber das funzt net richtig
habs nen bissle geändert und mit rumgespielt, aber nichts ist dabei rausgekommen

ich hoffe, jemand hat ne lösung :-)

Nachtrag: habe noch nen 2. Problem:
http://www.piranho.com/home/boards/...ef512bc6b74c5a9c779&boardid=31&threadid=38568
 
Zuletzt bearbeitet:
was geht denn nicht?
was da bei dem Anderen board sthet blick ich die Frage nicht, tut mir leid.

tob
 
beim anderen habe ich ne lösung, denke ich, mal ausprobieren

und hier das problem, dass ich danach keinen inhalt bzw, ein leerzeichen in der datei habe
 
warum nacher nix mer in der datei is weiss ich net, aber:
- wieso ist bei dir eine zeile nur 20 zeichen lang?
- benutz mal feof($fp)
- selbst wenn dieses script funzen würde, dann hast du zwischen den einzelnen zeilen nacher keinen zeilenumbruch mehr ($entry .= $zeile;)

]Ton[
 
nee die zeilen sind eigentlich nicht länger als 10 zeichen, aber egal, dass ist ja das kleinste problem

wie kriege ich denn die zeilenumbrüche hin? \n ist das doch oder?
 
also ich hab ma n clanscript geschrieben da habich das so gelöst:

PHP:
if ($action=="member_loeschen")
{
	if ($pass==$pw)
	{
	$fp=fopen("member.txt","r");
	$file=file("member.txt");
	$i=-1;
	while (!feof($fp))
	{
	$inhalt=fgets($fp,10000);
	$zeile=explode("|||",$inhalt);
	$i++;
	if ($zeile[0]==$id)
	{
	unset($file[$i]);
	$newinhalt = fopen("member.txt","w");
	fputs($newinhalt,implode("",$file));
	fclose($newinhalt);
	echo"löschen erfolgreich";
 
die Methode von Sabre ist sehr umständlich...

warum öffnest du die Datei per fopen? Das brauchst du nicht....file liest automatisch die Datei ein...ohne fopen...auch ist das fgets sinnlos, denn file liest jede Zeile der Datei in ein Array...sprich $file[0] ist Zeile 1, $file[1] ist Zeile 2 usw.


nun zum eigentlichen Problem:

Lies die Datei einfach einmal mit file() ein, lösche die Zeile die du löschen willst per unset $file[zeile] , und schreib dann alles wieder in die Datei zurück...fertig...;)
 
das problem ist ganz einfach bei mir gewesen dass ich nicht die zeile buachte sondern anhand der id die zeile finden muss. und id!=zeile. somit musste ich das machen. kannst mich eines besserern beleeren.

mfg sabre
 
Zurück