PHP Formular Designpattern

home php

Mit Unity ganz ohne Vorkenntnisse eigene Spiele entwickeln   -  Nutzen Sie die geniale Game Engine, um eigene Spiele zu entwickeln! Von der ersten Scene bis zum komplexen Multiplayer-Spiel zeigt Ihnen Erfolgsautor Thomas Theis Schritt für Schritt, wie es geht. Mit dem integrierten C#-Kurs lernen Sie alle Objekte und Befehle direkt so kennen, wie Sie in Unity-Skripten aussehen - ganz ohne Vorkenntnisse und externe Software!

Wir sind Mitglied im Amazon.Partnernet und können mit Affiliate-Links den Betrieb der Webseite etwas unterstützen, für Sie als Leser ist das natürlich vollkommen kostenlos.

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

Inhalt

Formular Design Pattern in PHP

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  }

Code

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  }

Code

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.


 28.01.2024    Kontakt@Oliver-Lohse.de    Formular

PHP 8 und MySQL im perfekten Zusammenspiel   -  Dynamische Webseiten mit PHP und MySQL programmieren. Alles, was Sie dafür wissen müssen, steht in diesem Buch. Profitieren Sie von einer praxisorientierten Einführung und lernen Sie alle neuen Sprachfeatures von PHP 8 kennen. Die Autoren Christian Wenz und Tobias Hauser sind erfahrene PHP-Programmierer und Datenbankspezialisten. Sie zeigen Ihnen, wie Sie MySQL und andere Datenbanksysteme effektiv einsetzen. Mit diesem Wissen machen Sie sich rundum fit für dynamische Websites.

Wir sind Mitglied im Amazon.Partnernet und können mit Affiliate-Links den Betrieb der Webseite etwas unterstützen, für Sie als Leser ist das natürlich vollkommen kostenlos.

Weitere passende Beiträge

Plugin für Affliate mit Formular

 bludit  Affiliate CTA Formular


Ein hochwertiges Affiliate und CTA Plugin für Bludit, mit beqemer Eingabemaske im Admin-Backend für vier Affiliate und CTA einblendungen im Hook pageBegin().

Einfacher SPAM Schutz im Kontaktformular

 bludit  Spam Sicherheit Mail Kontakt Formular


Wenn Sie das Bludit-Plugin Contact3 nutzen, können Sie in diesem Plugin eine einfache und wirkungsvolle Blackliste einbauen, die den Inhalt Ihrer Mail prüft

Contact3 Mailformular Hook einbinden

 bludit  Contact Mail Kontakt Formular


Blenden Sie das Kontaktformular Plugin Contact3 immer oben auf der Kontaktseite ein. Durch die Änderung des so genannten Hook ist dies einfach möglich.

Impressum


CMSWorkbench.de ist eine reine Entwickler-Webseite und dient vorwiegend als Wissensspeicher für die Entwicklung von CMS

Datenschutz


Die Webseite verwendet keinerlei Tracking- oder Speicher-Mechanismen, die Rückschlüsse auf Ihre IP oder das Leseverhalten zulassen

Affiliate


Wir sind Mitglied im Amazon Partnernet und können mit Affiliate-Links (* den Betrieb der Seite etwas unterstützen, für Sie ist das natürlich kostenlos

Kontakt


Sie können mit uns über eMail Kontakt aufnehmen, schreiben Sie an Kontakt@Oliver-Lohse.de