1. Zeile überschreiben |
languitar
Foren-Team
Beiträge: 2795 |
sag mal bitte was genau du machen möchtest. das geht nämlcih sicherlich viel einfacher.
|
 Profil
Editieren
Zitieren
|
Crash
Otto-Normal-Poster Threadstarter
Beiträge: 74 |
Also ich will:
Wenn man einen Text eingibt das er ihn in einer Datei namens "log.txt" speichert, aber die datei soll nicht mehr als 20 Zeilen haben, also muss er prüfen ob es die 20. Zeile ist, wenn ja dann überschreibt er die erste zeile und wenn nicht schreibt er die nächste zeile in der datei voll.. und immer wenn man ein Text eingegeben hatt prüft er es und in meiner eingabe.php hab ich es so das wenn man auf den Button klickt, das er $tet auf 12 setzt und weiter unten prüft er ob $tet auf 12 ist wenn ja schreibt er den Text in der "log.txt" datei
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
Also wie das da in die Datei reigneschrieben wird ist nen andere Sache, jetzt erst mal zum Formular.
Du baust dir ein Formular nach folgendem Muster:
ALLES WIRD IN EINER DATEI ABLAUFEN! also schreibst du in die gleiche Datei jetzt folgenden PHP-Code ÜBER die Ausgabe des Formulars:
Wie das mit dem Schreiben in die Datei läuft, gucken wir ein anderes mal.
|
 Profil
Editieren
Zitieren
|
Crash
Otto-Normal-Poster Threadstarter
Beiträge: 74 |
Huhu ,
Ich hab da jetzt bisschen rumgebastelt, und wenn man jetzt was eingibt schreibt er 20 Zeilen lang den ganzen Text wenn man Hallo eingibt sieht es so aus:
[10:32:35] () Hallo
[10:32:35] () Hallo
[10:32:35] () Hallo
[10:32:35] () Hallo
[10:32:35] () Hallo
[10:32:35] () Hallo
[10:32:35] () Hallo
[10:32:35] () Hallo
[10:32:35] () Hallo
[10:32:35] () Hallo
[10:32:35] () Hallo
[10:32:35] () Hallo
[10:32:35] () Hallo
[10:32:35] () Hallo
[10:32:35] () Hallo
[10:32:35] () Hallo
[10:32:35] () Hallo
[10:32:35] () Hallo
[10:32:35] () Hallo
[10:32:35] () Hallo
Und den Name setzt er auch nicht ein, aber das bekomm ich selber hin denk ich mal..
|
 Profil
Editieren
Zitieren
|
Crash
Otto-Normal-Poster Threadstarter
Beiträge: 74 |
Hi,
Ich hab das jetzt mal so gemacht:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19: | = 20) {
$datei = file("log.txt");
$fp = fopen("log.txt", w);
$fp = "$text";
fwrite($fp);
fclose($fp);
} else {
$datei2=fopen("log.txt",a);
fwrite($datei2, "[$zeit] ($chatuser) $text"."\n");
fclose($datei2);
}
}
?> |
Wenn 20 Zeilen geschrieben sind löscht er alle Zeilen aus der Datei und beschreibt die erste aber die 21. Zeile verschluckt er also er schreibt sie rein und leer die datei dadurch wird die 21. Zeile nicht ausgegeben wie könnte ich das ändern? :/
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
Den Fehler kann ich jetzt auch nciht finden, aber meinst du nicht, dass es sinnvoller wäre jedes mal wen unten eine neue Zeille angefügt wird oben einfach eine wegzunehmen?
|
 Profil
Editieren
Zitieren
|
Crash
Otto-Normal-Poster Threadstarter
Beiträge: 74 |
Ja, aber das hab ich doch nicht hinbekommen..
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
ist einfach. Alle Daten in ein Array lesen (mi file()), das erste Element löschen, den neuen Text hinten anhängen und das Array mit foreach wieder in die Datei schreiben.
|
 Profil
Editieren
Zitieren
|
Crash
Otto-Normal-Poster Threadstarter
Beiträge: 74 |
Wie lösch ich denn das erste Element in einen Array?
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
unset($array[0])
|
 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: | = 20) {
unset($array[0]);
foreach($datei as $line) {
if(key($datei) == 0) {
fwrite($fp, "[$zeit] ($chatuser) $text\n");
} else {
fwrite($fp, $line."\n");
}
}
}
}
?> |
Hm, das mit der foreach-Schleife geht nich, aber wie soll ich es anders machen?
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
Wofür ist denn die If-Abfrage eigentlich?? Du willst doch nur immer hinten eine Zeile anhängen und vorne eine löschen, oder???
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17: |
if(isset($_POST['text'])) {
$array = file("log.txt");
$zeit = date("H:i:s");
unset($array[0]);
$array[] = "[$zeit] ($chatuser) $_POST['text']\n";
$fp = fopen("log.txt", "w");
foreach($array as $line) {
fputs($fp, $line);
}
fclose($fp);
} |
So sollet es meiner Meinung nach gehen, ist aber nicht getestet.
|
 Profil
Editieren
Zitieren
|
Crash
Otto-Normal-Poster Threadstarter
Beiträge: 74 |
Hi,
Es geht, aber wenn in der Datei nur 1 Zeile ist, dann beschreibt er immer nur die 1 Zeile, muss ich da jetzt nen Zähler einbauen? Also wenn in der Datei 20 Zeilen sind macht er das, wenn nicht dann fügt er neue Zeile an?
*Edit* Hab es hinbekommen es funzt, danke dir )) *Edit*
Diese Nachricht wurde geändert von: Crash |
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
öhm ja, muss dann so aussehen:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16: | if(isset($_POST['text'])) {
$array = file("log.txt");
$zeit = date("H:i:s");
if (sizeof($array) >= 20) unset($array[0]);
$array[] = "[$zeit] ($chatuser) $_POST['text']\n";
$fp = fopen("log.txt", "w");
foreach($array as $line) {
fputs($fp, $line);
}
fclose($fp);
} |
Diese Nachricht wurde geändert von: languitar |
 Profil
Editieren
Zitieren
|