| 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.
---
Take a look here!
Lichtblick - Einblick - Ausblick
|
|  Profil
E-Mail
Website
Editieren
Zitieren
|
Crash
Otto-Normal-Poster
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:
1:
2:
3: | <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" name="frmeingabe">
<textarea name="text"></textarea>
</form> |
ALLES WIRD IN EINER DATEI ABLAUFEN! also schreibst du in die gleiche Datei jetzt folgenden PHP-Code ÜBER die Ausgabe des Formulars:
1:
2:
3:
4:
5:
6:
7:
8: | <?php
if(isset($_POST['text'])) {
/* hier kannst du jetzt deien ganzen Anweisungen zum eintragen reinmachen */
/* Der gepostete Text ist jetzt in der Variable $_POST['text'] vorhanden. Das
bezieht sich auf den Namen von der Textarea */
} |
Wie das mit dem Schreiben in die Datei läuft, gucken wir ein anderes mal.
---
Take a look here!
Lichtblick - Einblick - Ausblick
|
|  Profil
E-Mail
Website
Editieren
Zitieren
|
Crash
Otto-Normal-Poster
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
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: | <?php
$datei = "log.txt";
$hmm = count(file($datei));
include("inc\Smilies.inc.php");
$zeit = date("H:i:s");
if(isset($_POST['text'])) {
if ($hmm >= 20) {
$datei = file("log.txt");
$fp = fopen("log.txt", w);
$fp = "$text";
fwrite($fp);
fclose($fp);
} else {
$datei2=fopen("log.txt",a);
fwrite($datei2, "<font color=\"#999999\">[$zeit]</font> <font color=\"#000000\"><b>($chatuser)</b> $text</font>"."\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?
---
Take a look here!
Lichtblick - Einblick - Ausblick
|
|  Profil
E-Mail
Website
Editieren
Zitieren
|
Crash
Otto-Normal-Poster
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.
---
Take a look here!
Lichtblick - Einblick - Ausblick
|
|  Profil
E-Mail
Website
Editieren
Zitieren
|
Crash
Otto-Normal-Poster
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])
---
Take a look here!
Lichtblick - Einblick - Ausblick
|
|  Profil
E-Mail
Website
Editieren
Zitieren
|
Crash
Otto-Normal-Poster
Beiträge: 74
|
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18: | <?php
$zeit = date("H:i:s");
if(isset($_POST['text'])) {
$datei = "log.txt";
$fp = file("log.txt");
$hmm = count(file($datei));
if ($hmm >= 20) {
unset($array[0]);
foreach($datei as $line) {
if(key($datei) == 0) {
fwrite($fp, "<font color=\"#999999\">[$zeit]</font> <fontolor=\"#000000\"><b>($chatuser)</b> $text</font>\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[] = "<font color=\"#999999\">[$zeit]</font> <fontolor=\"#000000\"><b>($chatuser)</b> $_POST['text']</font>\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.
---
Take a look here!
Lichtblick - Einblick - Ausblick
|
|  Profil
E-Mail
Website
Editieren
Zitieren
|
Crash
Otto-Normal-Poster
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[] = "<font color=\"#999999\">[$zeit]</font> <fontolor=\"#000000\"><b>($chatuser)</b> $_POST['text']</font>\n";
$fp = fopen("log.txt", "w");
foreach($array as $line) {
fputs($fp, $line);
}
fclose($fp);
} |
---
Take a look here!
Lichtblick - Einblick - Ausblick
Diese Nachricht wurde geändert von: languitar |
|  Profil
E-Mail
Website
Editieren
Zitieren
|