TXT-File ändern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • TXT-File ändern

    Ich will nen News Script für meine Seite erstellen, der die Nachrichten im TXT File abspeichern, und die Frage:

    Ich möchte auch nachträglich die Daten ändern können und über FTP Prog das zu machen kann auf die dauer zu langweilig sein.
    Also kann man ganzen Text in einen Formular laden, genauer gesagt, TEXTAREA, dann ändern und abspeichern?

    Oder gibt es andere Möglichkeiten?

  • #2
    Ja das geht.

    Als erstet erstellst Du die Datei beim abschicken Deines Eingabeformulars:

    $text = // Text aus Formular;
    $file = "name.txt"; // Name der Datei
    $fp = fopen($file,"w");
    fputs($fp,$text);
    fclose($fp);

    Jetzt gibt es eine Datei mit deinem Text.

    Bastel Dir dann ein Script, welches die datei wieder öffnet und in einer TextArea anzeigt:

    $text = readfile("name.txt");

    Möglicherweise funktioniert diese kurzform nicht, dann probier das:
    $file = "name.txt";
    $fp = fopen($file,"r");
    fgets($fp, 1024); // Die Zahl gibt die maximale Zeichenlänge an.
    fclose($fp);

    Die Variable $text enthällt nun den gesammten Inhalt der Datei und kann im TextFeld geändert werden.

    Um den Inhalt nun wieder in die Datei zu schreiben benutz Du wieder das erste Script.

    Gruß, Andi

    Kommentar


    • #3
      Verstehe ich net so ganz. Ich meinte sowas in der Art
      Die Variable $text soll aus der Datei eingelesenen Text enthalten

      <textarea name="news" cols="80" rows="20">$text</textarea>

      Kommentar


      • #4
        <?$text=file($datei);?>
        <textarea>
        <?foreach($text as $a) print $a;?>
        </textarea>
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          Ich bin müde und irgendwie funzt das net mach ich morgen weiter

          Kommentar


          • #6

            ALSO ich kriege das einfach nicht hin.
            Kann einer bitte sagen, wieso in der Textarea nicht der Text der Datei ausgegeben wird
            PHP-Quelltext:
            -----------------------------------------
            <html>
            <head>
            <title>Korigieren</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
            </head>

            <?
            $fp = fopen("news.txt","r");
            fgets($fp, 1024);
            fclose($fp);
            echo"<textarea class=\"feld\" name=\"textfield\" cols=\"45\" rows=\"12\">$fp</textarea>";
            ?>
            <body bgcolor="#FFFFFF" text="#000000">
            </body>
            </html>
            -----------------------------------------
            Browser Ausgabe:
            -----------------------------------------
            <html>
            <head>
            <title>Korigieren</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
            </head>

            <textarea class="feld" name="textfield" cols="45" rows="12">Resource id #1</textarea><body bgcolor="#FFFFFF" text="#000000">
            </body>
            </html>
            -----------------------------------------

            Kommentar


            • #7
              falsch:
              Original geschrieben von archie
              <? // Fehler 1
              $fp = fopen("news.txt","r");
              fgets($fp, 1024); // Fehler 2 und 3
              fclose($fp);
              echo"<textarea class=\"feld\" name=\"textfield\" cols=\"45\" rows=\"12\">$fp</textarea>"; // Fehler 4 und 5
              ?>
              <body bgcolor="#FFFFFF" text="#000000">
              </body>
              </html>
              richtig:
              Code:
              <body bgcolor="#FFFFFF" text="#000000"> 
              <? 
              $fp = fopen('news.txt', 'r'); 
              [b]$text =[/b] fgets($fp, [b]filesize('news.txt'[/b]); 
              fclose($fp); 
              echo '<textarea class="feld" name="textfield" cols="45" rows="12">', [b]htmlentites($text)[/b], '</textarea>'; 
              ?> 
              </body> 
              </html>
              1. Ausgabe zwischen die body-Tags statt davor
              2. nicht nur 1024 Byte aus der Datei lesen, sondern den gesamten Inhalt
              3. Das ausgelesene in einer Variable speichern
              4. nicht das Datei-Handle, sondern den Inhalt der Datei ausgeben
              5. htmlentities sorgt dafür, dass das Eintragen von "</textarea>" ins Formular bei erneuter Ausgabe in die Textarea dieselbe nicht vorzeitg beendet.
              mein Sport: mein Frühstück: meine Arbeit:

              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

              Kommentar


              • #8

                $text = fgets($fp, filesize('news.txt'); Fehler 1
                $text = fgets($fp, filesize('news.txt'));

                Und im TEXTAREA wird folgendes ausgegeben:
                <br>
                <b>Fatal error</b>: Call to undefined function: htmlentites() in <b>/home/www/htdocs/deck-kater.de/news/korig.php</b> on line <b>12</b><br>

                Wieso?

                [Editiert von archie am 03-03-2002 um 19:59]

                Kommentar


                • #9
                  ) vergessen -> parse error
                  Beantworte nie Threads mit mehr als 15 followups...
                  Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                  Kommentar


                  • #10
                    Wenn ich aus:
                    --------------------------------
                    <textarea class="feld" name="textfield" cols="45" rows="12">', htmlentites($text), '</textarea>
                    --------------------------------
                    htmlentites rausnehme wir nur ein Teil des Textes angezeigt.
                    Warum?

                    Kommentar


                    • #11
                      poste mal die ganze zeile 12
                      Beantworte nie Threads mit mehr als 15 followups...
                      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                      Kommentar


                      • #12
                        Das sit die Zeile 12:
                        echo '<textarea class="feld" name="textfield" cols="45" rows="12">' htmlentites($text) '</textarea>';

                        Kommentar


                        • #13
                          echo "<textarea class=\"feld\" name=\"textfield\" cols=45 rows=12>".htmlentites($text)."</textarea>";

                          sollte gehen
                          Beantworte nie Threads mit mehr als 15 followups...
                          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                          Kommentar


                          • #14
                            DAs gleiche Problem hatte ich bei meinem News system auch wie es noch auf TXT dateien basirend war jhetzt habe ich es mit einer Textdatenbank gemacht und das ist meiner meinung nach viel besser wie mit TXT dateien. Also als tipp wenn du ma boch/zeit zu hast würde ich empfehlen das system mit TXTDBs zu machen

                            MfG

                            Stephan216

                            Kommentar


                            • #15
                              Hab auch das problem gehabt dass bei mir immer nur die erste zeile ausgegeben wurde!!
                              lag daran dass fgets immer nur eine zeile ausliest!!
                              ersetzt einfach fgets durch fread!!!

                              ciao

                              Kommentar

                              Lädt...
                              X