Ankündigung

Einklappen
Keine Ankündigung bisher.

Formularfeld -> per POST-Methode Ergebnis in andere Datei speichern?

Einklappen

Neue Werbung 2019

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

  • Formularfeld -> per POST-Methode Ergebnis in andere Datei speichern?

    Hallo zusammen,

    eine Noob-Frage - ich raff' es einfach nicht:

    Ich habe ein Formular mit nur 1 Textarea. Die Benutzereingabe wird per "Submit"-Button und der POST-Methode an der Server übergeben. Ich möchte jetzt, dass dieses Ergebnis nicht nur per z.B. "echo" ausgegeben wird (das geht ja soweit...), sondern das soll in eine HTML-Datei gespeichert werden, die ich an anderer Stelle für jeden Besucher ausgeben möchte (=Frontend).

    Hintergrund: Es handelt sich um "formatierten" Text, der von dem script "fckeditor" in einem selbstgeschriebenen Mini-Backend/CMS übergeben wird. Die Ausgabe klappt ja per "echo"-Befehl wie gesagt wunderbar, aber das bringt mir ja nicht viel, wenn ich damit "dauerhaften content" in einer Datei hinterlegen will.

    Geht das überhaupt? Hab mir vorhin fopen/fwrite/fclose angesehen, aber ich blicke nicht mehr ganz durch...

    Ich wäre für jeden Schubs in die richtige Richtung sehr dankbar.

    Danke fürs Lesen und Liebe Grüße,
    Tommy.

  • #2
    Zitat von Tomchen
    Geht das überhaupt? Hab mir vorhin fopen/fwrite/fclose angesehen, aber ich blicke nicht mehr ganz durch...
    Ja, damit geht das.
    Was Du in _POST findest, sind ganz normale Zeichenketten aus PHP-Sicht. Du kannst damit alles tun, was Du auch mit anderen Zeichenketten tun kannst.

    Kommentar


    • #3
      @David: Danke, dann schaue ich mir das Thema nochmal an...

      LG
      Tommy

      Kommentar


      • #4
        Juhuu! Ich habe es hinbekommen, die Daten in eine externe .html-Datei auf dem Server zu schreiben, und diese auch in der korrekten Formatierung wieder auszulesen - Danke nochmal für den "Schubs". Toll, dass das schonmal geht.

        Wenn ich es nicht etwas eilig hätte, würde ich nicht weiter fragen, aber ich kämpfe noch mit Folgendem: Die HTML-Datei, welche die Formulareingabe final speichert, "hängt" die eingegebenen Daten jeweils nur "hinten dran". Die HTML-Datei soll aber komplett überschrieben werden, weil der Admin den Inhalt im Endeffekt vorher dargestellt bekommt, und einfach bearbeiten können soll.

        Hier mal die Codes, falls jemand helfen möchte:

        Erstmal die aufruf.php, mit welcher der "fckeditor" aufgerufen wird:

        PHP-Code:
        <?php
        include_once("fckeditor/fckeditor.php") ;
        ?>
        <html>
        <head>
          <title>FCKeditor - Sample</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        </head>
        <body>
          <form action="sampleposteddata.php" method="post" target="_blank">
        <?php
        $oFCKeditor 
        = new FCKeditor('FCKeditor1') ;
        $oFCKeditor->BasePath '/fckeditor/' ;
        $oFCKeditor->Config['EnterMode'] = 'br';
        $oFCKeditor->Value '<p>This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.</p>' ;
        $oFCKeditor->Create() ;
        ?>
            <br>
            <input type="submit" value="Submit">
          </form>
        </body>
        </html>
        Das geht dann an die sampleposteddata.php, welche auch zugleich die Datei namens aktuelles.html mit Inhalt füllt:

        PHP-Code:
        <?php
        $sValue 
        stripslashes$_POST['FCKeditor1'] ) ;
        echo 
        "Tommys Test: Die übergebenen Werte lauten:<br>";
        echo 
        $sValue;

        $filename 'aktuelles.html';
        $somecontent $sValue;

        // Sichergehen, dass die Datei existiert und beschreibbar ist
        if (is_writable($filename)) {

            
        // Wir öffnen $filename im "Anhänge" - Modus.
            // Der Dateizeiger befindet sich am Ende der Datei, und
            // dort wird $somecontent später mit fwrite() geschrieben.
            
        if (!$handle fopen($filename"a")) {
                 print 
        "Kann die Datei $filename nicht öffnen";
                 exit;
            }

            
        // Schreibe $somecontent in die geöffnete Datei.
            
        if (!fwrite($handle$somecontent)) {
                print 
        "Kann in die Datei $filename nicht schreiben";
                exit;
            }

            print 
        "Fertig, in Datei $filename wurde $somecontent geschrieben";

            
        fclose($handle);

        } else {
            print 
        "Die Datei $filename ist nicht schreibbar";
        }

        ?>
        Was muss ich ändern, um die aktuelles.html bei jedem Submit-Vorgang neu zu beschreiben, anstatt nur zu "ergänzen"?


        Ich nehme ja an, dass es hiermit was zu tun hat:
        // Der Dateizeiger befindet sich am Ende der Datei, und
        // dort wird $somecontent später mit fwrite() geschrieben.
        Aber, wie meist (wenn ich überhaupt mal frage), ist es spät, ich sitze schon lange, und... bin PHP-Noob... Saublöde Kombination, nicht wahr? ,-))

        Danke für's Lesen

        LG
        Tommy

        Kommentar


        • #5
          Änder das
          Code:
              if (!$handle = fopen($filename, "a")) {
          mal in
          Code:
              if (!$handle = fopen($filename, "w")) {
          Google ist übrigens echt super. - Musst nur fopen eingeben und es kommt als erstes das: PHP: fopen - Manual

          'r' Öffnet die Datei nur zum Lesen und positioniert den Dateizeiger auf den Anfang der Datei.
          'r+' Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei.
          'w' Öffnet die Datei nur zum Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert wird versucht sie anzulegen.
          'w+' Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert, wird versucht sie anzulegen.
          'a' Öffnet die Datei nur zum Schreiben. Positioniert den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert, wird versucht sie anzulegen.
          'a+' Öffnet die Datei zum Lesen und Schreiben. Positioniert den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert, wird versucht sie anzulegen.

          Kommentar


          • #6
            Anstatt w würde ich r+ benutzen.

            Kommentar


            • #7
              Zitat von litterauspirna Beitrag anzeigen
              Anstatt w würde ich r+ benutzen.
              Darf ich fragen wieso?
              Kann ja sein das ich nen Denkfehler habe oder etwas nicht bedacht habe... Möcht ja dazu lernen.

              Kommentar


              • #8
                r+ würde ich in diesem Fall nicht empfehlen, da die bisherigen Daten nicht gelöscht sondern nur überschrieben werden. Wenn die bisherigen Daten länger als die neuen sind, bleibt dadurch am Ende der Datei Müll stehen.
                (Dem könnte man zwar nachträglich mit [man]ftruncate[/man]() entgegenwirken ...aber wozu?)

                edit: also in diesem Fall 'w' verwenden
                'w' Öffnet die Datei nur zum Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert wird versucht sie anzulegen.

                Kommentar


                • #9
                  Achso, das stimmt natürlich.

                  Kommentar


                  • #10
                    Vielen lieben Dank für Eure Antworten, es hat geklappt!


                    Natürlich hab ich google benutzt, aber ich habs trotzdem nicht gerafft


                    LG
                    Tommy

                    Kommentar

                    Lädt...
                    X