Standardisiertes PHP Formular Designpattern entwickeln

Die Formularverarbeitung durch PHP ist der beliebteste Standard im Web. Nutzen Sie ein intelligentes Design, können Sie sich viel Arbeit und Stress ersparen.

Juli 5, 2023 - Lesezeit: 4 Minuten

Es schreibt Ihnen niemand vor, moderne PHP-Scripte objektorientiert oder prozedural zu erstellen. Gerade die Formularverarbeitung durch PHP ist dessen große Stärke. Dieser Beitrag zeigt Ihnen ein Designpattern, wie Sie komplexe Formulare strukturieren, bzw. wie GET und POST gleichsam sinnvoll nutzen können. Wenn Sie dieses Pattern auf alle Formulare anwenden, behalten Sie garantiert den Überblick (ich spreche aus Erfahrung). Das Pattern

Im folgenden Abschnitt sehen Sie das Pattern in einer verkürzten Sprachweise, die die wichtigen Komponenten des Formulars skizzieren soll.

002  if (isset($_GET["form-laden"])) {
003      if (isset($_POST["btn-ok"])) {
004
005          $_POST["attribut"]
006          $_POST["attribut"]
007      }
008      if (isset($_POST["btn-cancel"])) {
009
010          $_POST["attribut"]
011          $_POST["attribut"]
012      }
013  } 
014
015  elseif (isset($_GET["form-speichern"])) {
016      if (isset($_POST["btn-ok"])) {
017
018          $_POST["attribut"]
019          $_POST["attribut"]
020      }
021      if (isset($_POST["btn-cancel"])) {
022
023          $_POST["attribut"]
024          $_POST["attribut"]
025      }
026  }
027  else {
028
029      <form action='programm-xyz.php?form-laden' method='POST'>
030
031          <input attribut>
032          <input attribut>
033
034          <button type='submit' name='btn-ok'     >Ok    </button>";
035          <button type='submit' name='btn-cancel' >Cancel</button>";
036      </form>
037
038      <form action='programm-xyz.php?form-speichern' method='POST'>
039
040          <input attribut>
041          <input attribut>
042 
043          <button type='submit' name='btn-ok'     >Ok    </button>";
044          <button type='submit' name='btn-cancel' >Cancel</button>";
045      </form>
046
047  }

Schauen Sie sich im PHP-Pattern bitte zunächst die blau markierten IF in Zeile 2 und 15 an. Diese beiden Strukturen verarbeiten, von welchem Formular der Aufruf kommt, denn Sie können durchaus mehrere haben. Dazu korrespondieren die beiden Formulare in den Zeilen 29 und 38, die ihren submit mittels GET an das PHP-Script senden.

Sind Sie nun in der Verarbeitung des entsprechenden Formulars angelangt, können Sie via POST auswerten, von welchem Button der Event stammt. Auf diese Weise können Sie unterschiedliche Button-Reaktionen im Script verarbeiten. Die in rot gekennzeichneten Zeilen 3, 8, 16, 34, 35, 43 und 44 stellen die dedizierte Verarbeitung eines Buttons dar. Vergessen Sie dieses Pattern

Im Internet finden Sie in vielen Tutorials das folgende Pattern, das sich zum quasi-Standard erhoben hat - das sollten Sie jedoch sehr schnell vergessen, da es ganz großer Unsinn ist. Mit diesem Design geraten Sie sehr schnell in die Sackgasse.

002  if ($_GET["form-laden"] == "Option1") {
003
004      $_POST["attribut"]
005      $_POST["attribut"]
006        
007  } 
008
009  else {
010
011      <form action='programm-xyz.php?form-laden=Option1' method='POST'>
012
013          <input attribut>
014          <input attribut>
015
016          <button type='submit' name='btn-ok'     >Ok    </button>";
017          <button type='submit' name='btn-cancel' >Cancel</button>";
018      </form>
019
020  }

Den Codeschnipsel oben können Sie zu 99,9% in vielen PHP Tutorials finden. Zwar ist es programmatisch absolut korrekt, jedoch ist das Code-Design extrem einfach gehalten und in Folge dessen ist Ihnen nur die Entwicklung sehr simpler PHP-Formulare möglich. Regel

Versuchen Sie sich beispielsweise an die folgende Designregel zu halten und Sie entwickeln leicht wartbaren Code der komplexe PHP-Formulare ermöglichen kann.

  • übermitteln Sie die Formular-Aktion via GET z.B.: programm.php?form-laden
  • verzichten Sie auf feste GET-Parameter innerhalb der Formulare z.B.: programm.php?form-laden=Option1
  • Formularattribute werden mittels POST verarbeitet z.B.: method=POST
  • Buttons beginnen mit dem Prefix z.B.: btn-...
  • Formulare beginnen mit dem Prefix z.B.: form-...
  • im alternativen IF-Zweig else sollte sich das Formular befinden laden Sie häufig benötigte Formulare aus und importieren diese z.B.: include("maske-formular.php");
  • benennen Sie Formulare (Masken mit Code) mit z.B. formular-...php
  • bennen Sie Masken (Masken ohne Programm-Code) mit z.B.: maske-...php
  • Scripte ohne Ausgaben am Bildschirm, sollten Sie als Module kennzeichnen oder in einer Funktionsbibliothek sammln, die Sie bei Bedarf includieren können z.B.: include("functions.php"); z.B.: include("modul-...php");

Praxistipp: Erstellen Sie Ihre PHP-Formulare derart, das diese auch eigenständig lauffähig sind, erst wenn dies der Fall ist, können Sie die PHP-Formulare in einen Workflow oder Prozess einbinden. Denn Sie sollten bedenken, das sich diese Prozesse und die Aufrufreihenfolge Ihrer Scripte, gerade am Beginn eines Projektes sehr häufig ändern können, daher ist es wichtig eine solide PHP-Basis-Struktur zu entwickeln, die modular und leicht umstellbar ist - erst dann sollten Sie an die Optimierung gehen.

Es steht Ihnen natürlich frei einen eigenen Standard für Ihre Scripte zu entwickeln. Ich möchte Ihnen dennoch ans Herz legen, Ihre Programme namentlich bestimmten Funktionseinheiten zu zuordnen, Sie behalten dadurch den Überblick und wissen daher schon vom Namen des Programmes welche Funktion es hat.

Schlagworte:

Beiträge in der Kategorie "PHP":

Wie können Sie Programm Kommentare in json Dateien und Files vornehmen? Gibt es einen Kommentar-Token oder einen anderen Trick um in json zu kommentieren?

Sie können mit PHP ein Verzeichnis mit Ordnern und Dateien einlesen und anzeigen. Der Beitrag zeigt ein kurzes Codesegment mit dem opendir() Befehl aus PHP.

Mit diesem Beitrag erstellen Sie (oder als Download) eine unabhängige Affiliate Datenbank, die Sie in jedem CMS, jeder Webseite oder jedem Blog nutzen können.

Die Formularverarbeitung durch PHP ist der beliebteste Standard im Web. Nutzen Sie ein intelligentes Design, können Sie sich viel Arbeit und Stress ersparen.

Möchten Sie einen Log-Mechanismus entwickeln den Sie leicht in jedes PICO Template einbinden können, dann ist JavaScript und PHP ideal dafür.

Das Auflösen mehrdimensionaler Arrays ist in PHP sehr sperrig, daher in diesem Beitrag ein einfaches diskretes Design-Pattern, für die Auflösung von Arrays

Die kleinste PHP-Template-Engine bzw kleinste PHP-Template-Parser, der mit Heredoc Syntax arbeitet. Die Heredoc Syntax ist ideal für kleine Prototypen.

Mit diesem kleinen Script realisieren Sie einen Mailversandt mit Standard PHP und einer Sperrliste die den Versand abbricht wenn Sperrworte enthalten sind.

In diesem Beitrag können Sie eine kleine FlatFile Projekt Datenbank herunterladen. Eine Beispielimplementierung in Anlehnung an die FlatFileDB von H.Wiledal

Sie möchten einen alten Artikel aus dem Google-Index entfernen dann sollten Sie vorher diesen Beitrag lesen

Dieser Beitrag zeigt einen Heredoc Template Parser und mini CMS, erstellt in PHP, unter Nutzung der Heredoc-Syntax. Content, Template und Parser in einer Datei.

Mit diesem PHP Script lesen Sie eine Mail in Ihrem Postfach, werten den Inhalt mittels PHP aus und löschen im Anschluss die Mail aus dem Posteingang mit PHP.

Möchten Sie große Mengen Content verwalten und systematisch organisieren oder entwickeln ein eigenes Flatfile CMS, dann hilft die Flatfile DB von Hugo Wiledal

Das ist die kleinste PHP Template-Engine, bzw. das kleinste PHP-CMS der Welt, erstellt mit der Programmiersprache PHP und 7 Zeilen Code.

Beiträge mit PHP-Mail an die Seite senden und veröffentlichen

Kategorien

Automad

Das kostenlose Flat File CMS Automad bietet bereits nach der Installation auf dem Server das beste Layout unter allen CMS am Markt.

Bludit

Das kostenlose Flatfile CMS Bludit ist das beliebteste Content Management System, das dem großen WordPress sehr nahe kommt, jedoch deutlich mehr Sicherheit bietet.

CMS

In dieser Rubrik geht es um übergreifenden Themen aus dem Bereich der Content Management Systeme.

Coast

Coast ist ein CMS aus deutscher Feder und ist mit einem exzellenten HTML/PHP Frontend-Editor zu vergleichen, die Daten werden direkt in der HTML-Datei gespeichert.

GetSimple

Das kostenlose Content Management System GetSimple verspricht genau das, was der Name andeutet, ein stabiles Flat File CMS auf der Basis von XML-Dateien.

GRAV

Das kostenlose Content Management System GRAV gehört zu den komplexesten CMS, da es den größten Funktionsumfang mitbringt.

Handlebars.JS

Handlebars.js ist eine kostenlose JavaScript Template-Engine mit der einfache Webseiten oder Prototypen leicht und schnell erzeugt werden können.

htaccess

Die .htaccess ist die wohl wichtigste und mächtigste Datei, über die der Server seinen Umgang mit den Daten und Besuchern steuert.

Java

Java ist die strategische Programmiersprache für verteilte Anwendungen im Internet oder auch in der Client-Server Architektur und sogar auf dem Host.

Monstra

Das CMS Monstra ist ein überaus gelungenes und sauber entwickeltes CMS mit Admin-Backend und Flat File Datenbank.

PHP

PHP ist die strategische Programmiersprache des Internets, mit PHP geht alles und ohne PHP nichts! Allerdings ist PHP nicht auf lokalen Client-Umgebungen verbreitet (aber möglich).

Pico

Das CMS Pico ist derzeit das ausgereifteste und einfachste headless CMS für den Einsatz großer Mengen an MarkDown-Files (Content).

Smarty

Smarty ist eine Template-Engine auf Basis der Programmiersprache PHP und ist in der Lage HTML-Vorlagen (Templates) dynamisch mit Content zu versorgen.

Typemill

Typemill ist zunächst ein ganz normales Flat File CMS, entfaltet jedoch sein wahres Potenzial mit einigen besonderen Plugins, die es zum kraftvollen Publishing-Tool macht.

WonderCMS

WonderCMS ist das mit Abstand kleinste CMS das es derzeit kostenlos gibt. WonderCMS kommt mit einem PHP-Script und einer JSON-Datenbank aus und bietet ein Backend.

WordPress

Das datenbankbasierte Content Management System WordPress ist das beliebteste CMS und hält die meisten Installationen - ist allerdings auch das am meisten attackierte System.

Derzeit sind noch keine passenden Beiträge vorhanden.