Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » 1. Zeile überschreiben Antworten
1. Zeile überschreiben

Crash
Otto-Normal-Poster


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:

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8:
<?php
$datei = "log.txt";
$hmm = count(file($datei));
if ($text != "") {
 if ($hmm == 20) {
  $datei2=fopen("log.txt",a);

?>

Da weiß ich nicht wie ich das mit den schreiben mach ...

?>

  Profil   Editieren   Zitieren

chip
Quasselstrippe


Beiträge: 391


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

1: 
2: 
3: 
4: 
5: 
6: 
7:
<?php
$fp = fopen("log.txt","r+")
$hmm = file($fp);
$hmm[0] = "Neuer Text";
fwrite($fp,$hmm);
fclose($fp):
?>


---

Diese Nachricht wurde geändert von: chip
  Profil   Website   Editieren   Zitieren

Crash
Otto-Normal-Poster


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:
<?php
 $datei = "log.txt";
 $hmm = count(file($datei));
 include("inc\Smilies.inc.php");
 $zeit = date("H:i:s");
if ($tet == 12) {
 if ($hmm >= 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, "<font color=\"#999999\">[$zeit]</font> <font color=\"#000000\"><b>($chatuser)</b> $text</font>"."\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?

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

Crash
Otto-Normal-Poster


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")

---
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: 
19:
<?php
 $datei = "log.txt";
 $hmm = count(file($datei));
 include("inc\Smilies.inc.php");
 $zeit = date("H:i:s");
if ($tet == 12) {
 if ($hmm >= 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, "<font color=\"#999999\">[$zeit]</font> <font color=\"#000000\"><b>($chatuser)</b> $text</font>"."\n");
  fclose($datei);
}
}
?>


So geht es aber nicht, da macht er aus <h1>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, "<font color=\"#999999\">[$zeit]</font> <fontolor=\"#000000\"><b>($chatuser)</b> $text</font>\n");
    } else {
         fwrite($fp, $line."\n");
    }
}


---
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:
<?php
   $zeit = date("H:i:s");
 if ($tet == 12) {
   $datei = file("log.txt");
   $fp = fopen("log.txt", w);
foreach($datei as $key => $line) {
    if($key == 0) {
        fwrite($fp, "<font color=\"#999999\">[$zeit]</font> <fontolor=\"#000000\"><b>($chatuser)</b> $text</font>\n");
    } else {
         fwrite($fp, $line."\n");
    }
}
}
?>


Dann macht er immernoch aus <h1>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?

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

Crash
Otto-Normal-Poster


Beiträge: 74


in der Datei steht:

<h1>Willkommen im Fun-Chat!</h1>
<font color="#999999">[11:58:28]</font> <font color="#000000"><b>(Admin)</b> so</font>
<font color="#999999">[11:58:32]</font> <font color="#000000"><b>(Admin)</b> 2</font>
<font color="#999999">[11:58:35]</font> <font color="#000000"><b>(Admin)</b> 3</font>
<font color="#999999">[11:58:37]</font> <font color="#000000"><b>(Admin)</b> 4</font>
<font color="#999999">[11:58:40]</font> <font color="#000000"><b>(Admin)</b> 5</font>
<font color="#999999">[11:58:42]</font> <font color="#000000"><b>(Admin)</b> 6</font>
<font color="#999999">[11:58:44]</font> <font color="#000000"><b>(Admin)</b> 7</font>
<font color="#999999">[11:58:46]</font> <font color="#000000"><b>(Admin)</b> 8</font>
<font color="#999999">[11:58:48]</font> <font color="#000000"><b>(Admin)</b> 9</font>
<font color="#999999">[11:58:51]</font> <font color="#000000"><b>(Admin)</b> 0</font>
<font color="#999999">[11:58:54]</font> <font color="#000000"><b>(Admin)</b> 11</font>
<font color="#999999">[11:58:57]</font> <font color="#000000"><b>(Admin)</b> 12</font>
<font color="#999999">[11:59:01]</font> <font color="#000000"><b>(Admin)</b> 13</font>
<font color="#999999">[11:59:03]</font> <font color="#000000"><b>(Admin)</b> 14</font>

Dann schreib ich immer irgendwas damit die 20 Zeilen voll werden und dann:

Arrayillkommen im Fun-Chat!</h1>
<font color="#999999">[11:58:28]</font> <font color="#000000"><b>(Admin)</b> so</font>
<font color="#999999">[11:58:32]</font> <font color="#000000"><b>(Admin)</b> 2</font>
<font color="#999999">[11:58:35]</font> <font color="#000000"><b>(Admin)</b> 3</font>
<font color="#999999">[11:58:37]</font> <font color="#000000"><b>(Admin)</b> 4</font>
<font color="#999999">[11:58:40]</font> <font color="#000000"><b>(Admin)</b> 5</font>
<font color="#999999">[11:58:42]</font> <font color="#000000"><b>(Admin)</b> 6</font>
<font color="#999999">[11:58:44]</font> <font color="#000000"><b>(Admin)</b> 7</font>
<font color="#999999">[11:58:46]</font> <font color="#000000"><b>(Admin)</b> 8</font>
<font color="#999999">[11:58:48]</font> <font color="#000000"><b>(Admin)</b> 9</font>
<font color="#999999">[11:58:51]</font> <font color="#000000"><b>(Admin)</b> 0</font>
<font color="#999999">[11:58:54]</font> <font color="#000000"><b>(Admin)</b> 11</font>
<font color="#999999">[11:58:57]</font> <font color="#000000"><b>(Admin)</b> 12</font>
<font color="#999999">[11:59:01]</font> <font color="#000000"><b>(Admin)</b> 13</font>
<font color="#999999">[11:59:03]</font> <font color="#000000"><b>(Admin)</b> 14</font>
<font color="#999999">[15:05:13]</font> <font color="#000000"><b>(Admin)</b> test1</font>
<font color="#999999">[15:05:15]</font> <font color="#000000"><b>(Admin)</b> test2</font>
<font color="#999999">[15:05:19]</font> <font color="#000000"><b>(Admin)</b> test3</font>
<font color="#999999">[15:05:21]</font> <font color="#000000"><b>(Admin)</b> test4</font>
<font color="#999999">[15:05:25]</font> <font color="#000000"><b>(Admin)</b> test5</font>

:/

  Profil   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14:
<?php
   $zeit = date("H:i:s");
 if ($tet == 12) {
   $datei = file("log.txt");
   $fp = fopen("log.txt", w);
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");
    }
}
}
?>

probier mal so

---
Take a look here!
Lichtblick - Einblick - Ausblick

Diese Nachricht wurde geändert von: languitar
  Profil   E-Mail   Website   Editieren   Zitieren

Crash
Otto-Normal-Poster


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.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

Crash
Otto-Normal-Poster


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
Seite 1 | 2  

Antworten
Nach oben