Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » 1. Zeile überschreiben Antworten
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
Seite 1 | 2  

Antworten
Nach oben