txt so in php auslesen, dass diese online editierbar

helga

Mitglied
Hallo zusammen,

ich hab schon wider ein Problem mit einer txt Datei.

Wie kann ich die txt Datei in einer php-Seite auslesen, dass diese online editierbar ist?

Gruß
Helga
 
Hallo!
Das ist mehr oder weniger kompliziert, es kommt immer darauf an was du genau machen willst.
Wenn in der Datei z.b HTML Code steht musst du den noch Umwandeln, aber ich geb dir jetzt mal ein einfaches Beispiel ohne HTML code in der Textdatei und du kannst dich immer noch melden.

PHP:
<form action="title2.php" method="post" name="form1" class="text">
  <p>Browsertitel<br>
    <textarea name="text" cols="90" rows="15" wrap="OFF" id="text"><?php
$fp = fopen("title.txt","r");
if ($fp)
{
    while(!feof($fp))
    {
    $text = fgets($fp,100);
    echo"$text";
    }
fclose($fp);
}
?></textarea>
  </p>
  <p>
    <input type="submit" name="Submit" value="speichern">
  </p>
  </form>
Kurze Erklärung:
fopen öffnet die Datei zum schreiben, das "r" bedeutet das nur gelesen werden soll, und zwar vom Anfang der Datei.
fgetsliest den Inhalt aus, und zwar in diesem Fall die ersten 100 Zeilen (Zeile bedeutet bis \n, also eine Art Absatz, kommt) Fgets ohne diesen wert liest nur die erste Zeile ein.
echo gibt diesen Text im Textfeld aus, das heisst er steht da wie das 8. Weltwunder (so fühlt es sich an wenn man das das erste mal schafft *gg*.
fclose schliest die Datei wieder nachdem mit echo ausgegeben wurde (sollte man immer machen).
Jetzt kann der Benutzer tippen und krusteln wie er will, und nachdem er das gemacht hat gehts ans speichern.
Das speichern funktioniert indem der Benutzer den "Submit Button drückt und dann damit die angegebene Datei title2.php aufruft. Diese kann zum Bleistift diesen Code enthalten:
PHP:
<?php
$text = $HTTP_POST_VARS["text"];
$datei = fopen("title.txt", "w");
fwrite ($datei, $text);
fclose ($datei);
echo "erfolg";
?>
$text = $HTTP_POST_VARS["text"];
weisst den Inhalt des Textfeldes mit namen "text" der Variablen $text zu.
Dannach wird mit fopen wie Datei wieder geöffnet, aber diesmal mit "w" zum schreiben, und auch wieder mit Dateizeiger am Anfang (d.h. alles wird später überschrieben!!!!)
fwrite schreibt in die geöffnete datei den Wert der Variablen.
Dannach wird wieder geschlossen und mit echo wird eigentlich nur angezeigt das alles glatt gegangen ist.
Hoffe das hat geholfen, habe mir erst vor kurzem das ganze Zeug gelernt und auch viel gefragt und bin jetzt froh endlich mal jemandem selber helfen zu können.
Ausserdem kann es sein das der weg mit fgets und dem Wert nicht der beste ist, aber er funktioniert bei mir als einzigster, alle anderen Befehle haben mir nicht das gewünschte gebracht.
Schreib aber bitte hier rein ob es geklappt hat!

Gruß Stefan
 
Danke :) also bei mir klappt es. Das Teil sollte schnellstens in die Tut-Ecke, da es das erste mal war, dass ein Lesen-Schreiben-Script auf Anhieb funktionierte. Danke schön.

(gibt es eine Möglichkeit zu sagen, dass von zeile 10-100 gelesen und geschrieben werden soll?

PHP:
$text = fgets($fp,10-100);
:)

)
 
Zuletzt bearbeitet:
Hallo Stephan,

1.000 Dank. Ist echt spitze, klappt wunderbar! Ich finde auch, dass es undbedingt in die Tutorialecke sollte.

Viele Grüße

Helga
 
..sorry, hab grad gesehen, dass ich Stefan falsch geschrieben habe.

Hab jetzt noch ein klienes Problem, mir gibt es die zeilen so aus:

<b><p>Aktuelles</b><br><br>Hier steht künftig das Aktuelle.<br>Die älteren Einträge stehen dann im Archiv<br><br><small>Eintrag vom: 28.7.2003</small><hr><br><br><br>
<b><p>Test</b><br><br>Testeintrag Nummer 1<br><br><small>Eintrag vom: 28.7.2003</small><hr><br><br><br>

wie kann ich die Tags entfernen, und den text mit Enter formatiert ausgeben lassen?

Gruß
Helga
 
Hallo Helga!

es gibt eine PHP-Funktion, die alle HTML-Tags weglöscht.
Allerdings mußt Du beachten, dass dabei die Formatierung komplett verloren geht.
PHP:
$text = "<html><head><title>TITEL..."; /* Diese Variable enthält
den Text mit <html>-Tags */
$text = strip_tags($text,"\n"); /* die Funktion strip_tags entfernt
die Html-Tags aus einem String (hier $text)
Der Parameter danach ("\n") sagt der Funktion, dass alle Tags außer
dem \n gelöscht werden sollen.*/

Das wars.
 
Original geschrieben von helga
..sorry, hab grad gesehen, dass ich Stefan falsch geschrieben habe.

Hab jetzt noch ein klienes Problem, mir gibt es die zeilen so aus:

<b><p>Aktuelles</b><br><br>Hier steht künftig das Aktuelle.<br>Die älteren Einträge stehen dann im Archiv<br><br><small>Eintrag vom: 28.7.2003</small><hr><br><br><br>
<b><p>Test</b><br><br>Testeintrag Nummer 1<br><br><small>Eintrag vom: 28.7.2003</small><hr><br><br><br>

wie kann ich die Tags entfernen, und den text mit Enter formatiert ausgeben lassen?

Gruß
Helga
Hi Ihr!
Freut mich das Ihr damit was anfangen könnt!

Genau das meinte ich mit HTML Code in der Datei macht das ganze schwieriger.
Du kannst jetzt zum Beispiel noch nach Moritz´s Funktion dadurch erweitern das Du anstatt der \n Zeilenvorschüben die <br> Tags im Text lässt
$text = strip_tags($text,"<br>");
Danach kannst du dann alle <br> durch Zeilenvorschübe ersetzen.
Das geht mit
$text = str_replace("<br>", "\n", $text);
Die umkehrfunktion ($text = str_replace\n", "("<br>", $text);) musst du dann in der title2.php vor *gg* dem speichern benutzen.
Aber an Deiner Stelle würde ich überlegen wie du den Text mehr vom Seitenaufbau und auch der Textformatierung ausgenommen speichern kannst. Eine möglichkeit wäre Zeilenweises speichern und Includieren.

Aber Ihr habt mich überredet, ich werd bis morgen Abend ein Tutorial schreiben wo diese ganze Textdatei Editieren Geschichte behandelt wird. Ich kann nicht versprechen das das 100%ig richtig wird, weil ich selber noch nicht alles verstehe was ich mach aber ich werd mir mühe geben.
An wen soll ich das dann senden? Hat jemand noch wünsche das was spezielles noch behandelt werden soll?

Gruß Stefan
 
das mit dem text ist ja eigtlich auch gar net schlimm, finde ich, was solls wenn die Zeichen drin sind, es geht ja nur darum, dass man die ganze Sache nicht via Ftp machen muss.

Ein kleienes Problem habe ich jetzt allerdings noch. Sobald ich diese Editierseite aufrufe, aber keine Änderung durchführe und auch nicht speichere, sind plötzlich meine ganzen Einträge weg.

Gruß
Helga
 
bei mir funktioniert das immer noch nicht, dass ich die zeichen bei beim auslesen der txt datei nicht sehe. Meine Eingabezeile die für das Eintragen in der txt Datei verantwortlich ist sieht wie folgt aus:

PHP:
$eintrag2 = "<b><p>$ueberschrift</b><br><br>$text<br><br><small>Eintrag vom: $datum[mday].$datum[mon].$datum[year]</small><hr><br><br><br>";
 
Zurück