1. Zeile überschreiben |
Crash
Otto-Normal-Poster Threadstarter
Beiträge: 74 |
Hi,
Wie kann ich es machen, wenn eine Datei 20 Zeilen hat, dass die 1 dann überschrieben wird? So weit bin ich:
Da weiß ich nicht wie ich das mit den schreiben mach ...
?>
|
 Profil
Editieren
Zitieren
|
chip
Foren-Team
Beiträge: 419 |
Also, alle Zeilen in ein Array einlesen und dann das erste Array-Element ändern/überschreiben. Du zählst ja in Zeile 3 die Anzahl der Array-Elemente. Du musst aber auf ein bestimmtes Element (hier das erste) im Array $hmm zugreifen und das ändern und dann alles wieder in die Datei schreiben.
Also
---
Diese Nachricht wurde geändert von: chip |
 Profil
Website
Editieren
Zitieren
|
Crash
Otto-Normal-Poster Threadstarter
Beiträge: 74 |
Hi,
Wenn ich das so schreib:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19: | = 20) {
$fp = fopen("log.txt","r+");
$hmm = file("$fp");
$hmm[1] = "$text";
fwrite($fp,$hmm);
fclose($fp);
} else {
$datei=fopen("log.txt",a);
fwrite($datei, "[$zeit] ($chatuser) $text"."\n");
fclose($datei);
}
}
?> |
Kommt der Fehler:
Warning: file(Resource id #4): failed to open stream: No such file or directory in E:\minixampp\minixampp\htdocs\Chat\eingabe2.php on line 30
Aber was ist falsch?
Diese Nachricht wurde geändert von: Crash |
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
Welche Zeile ist den Zeile 30 hier?
|
 Profil
Editieren
Zitieren
|
Crash
Otto-Normal-Poster Threadstarter
Beiträge: 74 |
$hmm = file("$fp");
Das ist Zeile 30..
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
fü file() braucht man keinen filestream. Eifnach den Dateinamen da rein -> file("log.txt")
|
 Profil
Editieren
Zitieren
|
Crash
Otto-Normal-Poster Threadstarter
Beiträge: 74 |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19: | = 20) {
$fp = fopen("log.txt","r+");
$hmm = file("log.txt");
$hmm[1] = "$text";
fwrite($fp,$hmm);
fclose($fp);
} else {
$datei=fopen("log.txt",a);
fwrite($datei, "[$zeit] ($chatuser) $text"."\n");
fclose($datei);
}
}
?> |
So geht es aber nicht, da macht er aus W Array
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
du hast in $datei dann auch ein array, dass du zeilenweise wieder in die Datei schreiben musst.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10: | $datei = file("log.txt");
$fp = fopen("log.txt", w);
foreach($datei as $key => $line) {
if($key == 0) {
fwrite($fp, "[$zeit] ($chatuser) $text\n");
} else {
fwrite($fp, $line."\n");
}
} |
|
 Profil
Editieren
Zitieren
|
Crash
Otto-Normal-Poster Threadstarter
Beiträge: 74 |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14: | $line) {
if($key == 0) {
fwrite($fp, "[$zeit] ($chatuser) $text\n");
} else {
fwrite($fp, $line."\n");
}
}
}
?> |
Dann macht er immernoch aus W Array und schreibt es nicht in die Datei
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
kann eigentlich nicht sein...
was steht genau in der Datei?
|
 Profil
Editieren
Zitieren
|
Crash
Otto-Normal-Poster Threadstarter
Beiträge: 74 |
in der Datei steht:
Willkommen im Fun-Chat!
[11:58:28] (Admin) so
[11:58:32] (Admin) 2
[11:58:35] (Admin) 3
[11:58:37] (Admin) 4
[11:58:40] (Admin) 5
[11:58:42] (Admin) 6
[11:58:44] (Admin) 7
[11:58:46] (Admin) 8
[11:58:48] (Admin) 9
[11:58:51] (Admin) 0
[11:58:54] (Admin) 11
[11:58:57] (Admin) 12
[11:59:01] (Admin) 13
[11:59:03] (Admin) 14
Dann schreib ich immer irgendwas damit die 20 Zeilen voll werden und dann:
Arrayillkommen im Fun-Chat!
[11:58:28] (Admin) so
[11:58:32] (Admin) 2
[11:58:35] (Admin) 3
[11:58:37] (Admin) 4
[11:58:40] (Admin) 5
[11:58:42] (Admin) 6
[11:58:44] (Admin) 7
[11:58:46] (Admin) 8
[11:58:48] (Admin) 9
[11:58:51] (Admin) 0
[11:58:54] (Admin) 11
[11:58:57] (Admin) 12
[11:59:01] (Admin) 13
[11:59:03] (Admin) 14
[15:05:13] (Admin) test1
[15:05:15] (Admin) test2
[15:05:19] (Admin) test3
[15:05:21] (Admin) test4
[15:05:25] (Admin) test5
:/
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14: | [$zeit] ($chatuser) $text\n");
} else {
fwrite($fp, $line."\n");
}
}
}
?> |
probier mal so
Diese Nachricht wurde geändert von: languitar |
 Profil
Editieren
Zitieren
|
Crash
Otto-Normal-Poster Threadstarter
Beiträge: 74 |
hmmmm, das geht nich, aber ich glaub langsam ich mach da was falsch. Also ich hab den Code in der eingabe.php.. Man gibt den Text ein und wenn man auf den Button (oder enter) drückt setzt er $tet auf 12 und weiter unten prüft er ob $tet auf 12 ist und wenn ja dann den Code von hier..
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
da ist wohl was falsch ;)
Übermittelst du Variablen? Dann kannst du eifnach gucken, ob die gesetzt sind isset() Wenn ja, wird halt der Code zum Schreiben ausgeführt.
|
 Profil
Editieren
Zitieren
|
Crash
Otto-Normal-Poster Threadstarter
Beiträge: 74 |
hmm nee das passiert alles in einer datei, aber kann ich es so machen: Das er die Variable an einer anderen Datei sendet, und dort dann prüft ob es die 20 Zeile ist, wenn ja dann überschreibt er die erste oder wenn nicht dann hängt er den Text an?
|
 Profil
Editieren
Zitieren
|