Hallo, Christian,
Ich finde dein Vorhaben interessant, aber ich weiß nicht genau, worauf du hinauswillst. Ich habe so etwas Ähnliches auch in einer Form automatisiert, mir ging es aber darum, ein Script zu entwerfen, welches die Formulareingaben nach von mir "händisch" vorgegebenen Kriterien überprüft (muss gesetzt sein, muss RegExp entsprechen usw.) und sie bemängelt, also das Formular solange wieder anzeigt, bis der Benutzer alle Eingaben berichtigt hat. Dazu habe ich die Struktur des Formulars erst einmal auf ein Array abgebildet (könnte man auch mit Objekten machen, oder XML, inwieweit XForms schon hilfreich wären, weiß ich nicht).
Hier einmal ein Beispiel:
http://reich-gym.de/ehem_anmeldung_eintragen.php (Es kommen sofort die Fehlermeldungen, das erste Formular ist http://reich-gym.de/ehem_anmeldung_form.php. Wenn du "aus Versehen" etwas richtiges eingibst, wird natürlich ein Datenbankeintrag erzeugt, also bitte nach Möglichkeit vermeiden.)
Code: http://reich-gym.de/ehem_anmeldung_eintragen.php.txt. Steht nix geheimes drin, wenn, dann nur wie man das die Abfragen narren kann, aber da habe ich sowieso ein Auge drüber und verlasse mich nicht auf die Technik. Und ja, die MySQl-Zugangsdaten liegen innerhalb des document roots. Interessant sind die ersten beiden Funktionen, die die POST-Eingaben mit denen des Arrays abgleichen und danach den valide-Flag setzen. Ich weiß, der Code ist grausig und bedarf einer Überarbeitung, die Algos sind extrem suboptimal, aber sie erfüllen ihren Zweck.
(Der Quelltext des o.g. Scripts ist meinetwegen public domain, wenn du etwas verwenden kannst [nicht dass ich das denke *fg*], verwende es...)
Kurz gesagt, so etwas in einer Klasse fände ich nützlicher als eine Klasse, welche 20 verschiedene PLZ-Notationen und 10 verschiedene Telefonnummersyntaxen mitbringt. Sicherlich könnte so etwas vorgegeben werden, aber ich würde nicht die Hauptarbeit in das Sammeln von Telefonnummermöglichkeiten stecken. Mich würde es mehr interessieren, die Regulären Ausdrücke selbst festlegen zu können. Nebenbei finde ich, dass die Validierung selbst der kleinste Aufwand ist, das automatische generieren des Formulars bei Fehlern finde ich viel zeitraubender. Immer und immer wieder will man kleine Formulare gestalten und ist gezwungen, jedes mal den Validierungs- und Ausgabealgorithmus neuzuschreiben, hier wäre eine Klasse wirklich nützlich. Wenn man die Formulardaten zudem in XML angeben könnte, welche die Klasse parsen würde, wäre es perfekt. Diese könnte man mit fieldset und legend strukturieren und das Formular ggf. mit den Korrekturanmerkungen anhand von Templates ausgeben, oder die CSS-Klassen vorgeben, sodass man verschiedene Formatierungen anwenden könnte.
Wenn man die Eingaben von Benutzern betrachtet leuchtet auch schnell ein, dass oft gar nicht die Möglichkeit besteht, alles von Name über Straßen und Adresse bis zu Telefonnummer zu normieren, angesichts der Benutzerdaten der o.g. Datenbank habe ich viele RegExps wieder herausgenommen bzw. entschärft, da von USA über Mexiko und Neuseeland bis Australien alle möglichen Kombinationen für die persönlichen Daten vorhanden sind. Ich wüsste beim besten Willen keine RegExp, welche all diese Eventualitäten berücksichtigen kann... ein paar Beispiele:
NE2 3DB Newcastle Upon Tyne
75126 Forney, TX
2300 Newcastle NSW
CP 16029 Mexico DF
AT-1130 Wien
L8E 1B8 Hamilton
Das einzige was mir dazu einfällt ist .+ ;) - naja, vielleich [A-Za-z0-9,-]+ oder so etwas, aber das hat nichts mit "Validierung" zu tun. Im Endeffekt läuft es darauf hinaus, dass ich die Daten manuell überprüfe, denn automatisiert geht es beim besten Willen nicht.
Nur meine zwei Kopeken... :)
Mathias