Datensatz aktualisieren - Formulare: wichtige Unterschiede

Dreamweaver-Anwendern, die das in diesem Tutorial vorgestellte Validierungskonzept erfolgreich mit einer “Datensatz einfügen” – Seite umsetzen können, stellt sich logischerweise die Frage, was es bei einerr “Datensatz aktualisieren” – Seite zu berücksichtigen gilt.

Das Validierungskonzept kann selbstverständlich 1:1 übernommen werden, und die Anpassung einer Validierungsregel wird nur selten erforderlich sein.

Der wesentliche Unterschied betrifft einen Aspekt, mit dem wir uns bereits auf Seite 2 dieses Tutorials befasst haben (siehe “Beibehaltung der Formulardaten”) und der sich bei einer “Datensatz aktualisieren” – Seite etwas komplexer gestaltet :: der in einem Eingabefeld angezeigte Wert wird sich auch hier im Verlauf des Validierungsprozesses ändern, allerdings müssen wir eine zusätzliche Informationsquelle berücksichtigen :: beim erstmaligen Aufruf besitzen unsere Formularelemente einen “Initialwert”, welcher üblichweise auf dem Ergebnis einer “Datensatz aktualisieren” – Abfrage beruht.

Ich denke, dass die folgende Grafik besonders dem “Einsteiger” besser verdeutlichen kann, worum es hier geht:

Workflow der 'Datensatz aktualisieren' - Prozudur

Lösung 1 :: statischer Code

In folgendem Beispiel wird das value – Attribut eines einzeiligen Eingabefeldes auf Basis einer statisch definierten if/else – Bedingung belegt, welche die in der vorherigen Grafik vorgestellten Konditionen A und B umsetzt:


Feldwert mittels statischem PHP-Code belegen

Lösung 2 :: Verwendung einer Funktion

Besonders bei komplexen Formularen mit mehreren Eingabefeldern wäre es naheliegend, den im vorherigen “statischen” Lösungsansatz demonstrierten Wust an Code durch eine PHP-Funktion zu ersetzen, die exakt das Gleiche bewirkt und sich deutlich eleganter verwenden lässt:


Feldwert mittels einer PHP-Funktion belegen

Die Funktion “setInputValue” besitzt folgende Parameter:

a) checkAgainstVariableSource steht für den Namen der Datenbankabfrage, die beim erstmaligen Seitenaufruf für die Belegung des Feldwertes zuständig ist.

b) checkAgainstVariableValue repräsentiert sowohl den Wert des “name” – Attribut des aktuellen Eingabefeldes als auch die gleichnamige Spalte der MySQL-Tabelle, welche in der checkAgainstVariableSource – Datenbankabfrage spezifiziert ist.

Unterschiedliche Formularelemente – unterschiedliche Anforderungen

Die vorgenannte Funktion bzw. ihr “statischer Code” – Gegenstück benötigen nur zwei Parameter, weil sie innerhalb des vorhandenen “value” – Attributs des einzeiligen Eingabefeldes plaziert werden können.

Leicht komplizierter gestaltet sich die Angelegenheit bei Formularelementen mit multiplen Auswahloptionen und vordefinierten Absendewerten, denen ein zusätzliches Attribut hinzugefügt werden muss, damit sie im Browser als “ausgewählt” bzw. “markiert” angezeigt werden:

  • Auswahllisten
  • Radio-Buttons
  • Checkboxen

Stellvertretend für die o.g. Kategorie von Formularelementen möchte ich im Folgenden eine ähnliche PHP-Funktion vorstellen, die dem Eintrag einer Auswahlliste das erforderliche selected=“selected” – Attribut hinzufügen wird. Kenner wissen, dass die genannte Notation XHTML-Standard-konform ist und ansonsten ein simples selected ausreicht.

den Menüeintrag einer Auswahlliste vorselektieren

Haben Sie den Unterschied zur “Vorgänger-Funktion” bemerkt ? Die Funktion “setMenuSelected” besitzt einen zusätzlichen Parameter namens “optionValue”, der benötigt wird, um innerhalb der Funktion den Wert des jeweiligen Listeneintrags – ein nunmehr vertrautes Prinzip – entweder mit dem Ergebnis der Datenbankabfrage oder aber dem zuletzt selektierten Listeneintrag zu vergleichen.

Tipps

Benötigen Sie ähnliche Funktionen für Radio-Buttons und Checkboxen ? Nun, dann schreiben Sie sie den Krempel doch einfach selber ! :-)

Scherz beiseite :: da die “Markierung” einer Option bei diesen beiden Formularelementen durch das checked=“checked” bzw. checked – Attribut erzeugt wird, würde ich an Ihrer Stelle ganz einfach…

a) eine Kopie der Funktion “setMenuSelected” erstellen, diese…

b) beispielsweise zu “setRadioChecked” umbenennen und…

c) innerhalb dieser Funktion ein echo “checked”; notieren.


Themenübersicht dieses Tutorials

PHP-Formularvalidierung

ein einfaches Beispiel

multiple Regeln pro Element

Zend Framework Features integrieren

> Datensatz aktualisieren: wichtige Unterschiede