topfblume: PHP Starthilfe

Tach auch ...

Ich war in der Vergangenheit bei selfhtml immer gut beraten gewesen zum Thema html/xhtml css.

Nun möchte ich mich mal an php heran wagen.
Bisher:
Ich habe auf einer Seite einen Textabschnitt in dem sich der Inhalt ca einmal wöchentlich ändert. Bisher bin ich so vorgegangen das ich lokal die Kopie im Quelltext der html Seite verändert habe und dann mittels ftp auf den Server überschrieben habe.

Das geht doch bestimmt eleganter!
Dachte mir eventuell folgendes:

Auf einer Passwortgeschützten Seite ist ein Formular.
In dem <textarea> tippe ich einen beliebig langen Text. Nach dem absenden soll der Text auf einer anderen Seite des gleichen Projekts den vorhandenen Text überschrieben haben.

Könntet Ihr mir mal einen Schubs in die richtige Richtung geben aber bitte behutsam.

Vielen Dank

  1. Im prinzip ist das dasselbe wie bei einem Formmailer:
    http://aktuell.de.selfhtml.org/artikel/php/form-mail/

    Nur musst du den Teil der die E-Mail-Nachricht verschickt durch eine "überschreibe mein File"-Routine austauschen:

    fopen(), fwrite() und fclose() sind die deine Freunde.

    Ergänzend zu dem bereits verlinkten Formmailer sind das etwa 3 Zeilen extra Code.

    1. Hi!

      fopen(), fwrite() und fclose() sind die deine Freunde.
      Ergänzend zu dem bereits verlinkten Formmailer sind das etwa 3 Zeilen extra Code.

      file_put_contents() ist nur eine.

      Lo!

      1. fopen(), fwrite() und fclose() sind die deine Freunde.
        Ergänzend zu dem bereits verlinkten Formmailer sind das etwa 3 Zeilen extra Code.

        file_put_contents() ist nur eine.

        Wenn das File sowieso einfach hart ersetzt werden soll ist das richtig ja - allerdings ist der Lerneffekt beim Verwenden der einzelnen Funktionen größer.

        Die Einzelfunktionen haben zudem den Vorteil, dass sie bei wiederholten Schreibvorgängen schneller sind - z.B. wenn man eine Import-Routine schreibt, die z.B. ein CSV in Liste an SQL-Statements umformt oder ähnliches und diese per Schleife durchläuft und jede Zeile einzeln schreibt.

        Ebenso hat es Vorteile, wenn man den Fileinhalt zuvor lesen muss und dann in dasselbe File schreiben (möglicherweise an einer bestimmten Stelle).

        Aber bei einem "knall alles rein und überschreibe den Rest"- oder "häng' mein Zeug einfach hinten an"-Vorgang ist file_put_contents() die bessere Lösung, ja.

        1. Hi!

          fopen(), fwrite() und fclose() sind die deine Freunde.
          Ergänzend zu dem bereits verlinkten Formmailer sind das etwa 3 Zeilen extra Code.
          file_put_contents() ist nur eine.
          Wenn das File sowieso einfach hart ersetzt werden soll ist das richtig ja - allerdings ist der Lerneffekt beim Verwenden der einzelnen Funktionen größer.

          Achwas, nur der Aufwand ist größer. Und wenn es nicht komplett ersetzt sondern nur teilweise umgeschrieben werden soll, reichen deine drei Funktionen auch nicht. Auch dann arbeitet es sich mit file_get/put_contents() problemlos(er). Wenn du mit Einzelschritten blockweise liest, musst du beim Suchen die Blockgrenzen beachten. Wenn du blockweise alles in einen String liest, um erst dann in ihm die passende Stelle zu suchen, kannst du gleich file_get_contents() nehmen. Und dann hast du auch noch eine Textdatei und keine, in der du mal eben einen von der Größe her definierten Block überschreiben kannst, sondern du musst ab deiner Änderung den gesamten Rest neu schreiben. Ohne Zwischenablage des gesamten Textes in einem String brauchst du dafür zwei Handles, eins zum Lesen und eine zweite Datei zum Schreiben des neuen Inhalts und noch ein Datei-Umbenennen nebst Löschen. Nix ist mit drei Zeilen. Zudem müsste man für ein "richtigen" Lerneffekt noch File-Locking in Betracht ziehen. Doch im gefragten Szenario halte ich das für verzichtbar. Selbst wenn, ist man bei file_put_contents() mit einem zusätzlichen Flag schnell fertig.

          Die Einzelfunktionen haben zudem den Vorteil, dass sie bei wiederholten Schreibvorgängen schneller sind - z.B. wenn man eine Import-Routine schreibt, die z.B. ein CSV in Liste an SQL-Statements umformt oder ähnliches und diese per Schleife durchläuft und jede Zeile einzeln schreibt.

          Das Szenario haben wir gerade nicht. Zudem braucht es auch eine kritische Masse, ab der sich diese Vorgehensweise erst auszahlt.

          Ebenso hat es Vorteile, wenn man den Fileinhalt zuvor lesen muss und dann in dasselbe File schreiben (möglicherweise an einer bestimmten Stelle).

          Einfach eine separate Datei anlegen, die komplett getauscht werden kann und mit include in die eigentliche Datei einladen, ist der geringste Aufwand.

          Lo!

          1. Danke erstmal,
            habe mir gerade erst webspace mit php Unterstützung bestellt. Ist aber noch nicht freigegeben. Werde dann umgehend das hier gelesene ausprobieren.

            Für mich persönlich ist es einfacher zu verstehen wenn ich erstmal so wenig Funktionen wie möglich nutze um das beschriebene umzusetzen. Ich weiß noch aus der Vergangenheit das es noch kompliziert genug wird wenn man später auch noch anfängt das geschriebene auswerten zulassen.
            Wenn es also eine Funktion gibt die den vorhandenen Text überschreibt, dann ist das erst mal genug. Werde bestimmt noch über das eine oder andere Problem stolpern auf dem Weg zur Vollendung.

            Danke nochmal, schönes WE
            Gruß topfblume