Dabei scheint ja was falsch zu sein, denn sonst würden die nachträglich erzeugten Formular-Elemente ja auch mit übertragen ...
Hi Andreas,
ich vermute mal, dir ist irgendwo eine meine Antworten durch die Lappen gegangen. Der Fehler ist dahingehend eingegrenzt, dass er nicht beim Erstellen der input-Elemente zu suchen ist.
In dem Hauptprojekt liegt eine fehlerhafte Verschachtelung vor. Dadurch wird das form-Element ungewollt früh (durch Browser-Korrektur) geschlossen und alle input-Elemente stehen außerhalb des form-Elements.
Verwunderlich ist also eigentlich nicht, dass die nachträglich generierten Felder verloren gehen, sondern dass alle vom Server erstellten Felder trotzdem übertragen werden.
Ungünstig war zusätzlich, dass ich beim Validieren sehr unbedarft war. Viele Elemente der Seite (auch das kritische Formular) werden nur unter bestimmten Voraussetzungen (bestimmte $_POST-Variablen mit bestimmten Werten) included. Der Validator hat also ein fast leeres Dokument geprüft und ich habe mich auf das positive Ergebnis gestützt und mich dadurch bei der Fehlersuche etwas in die Irre führen lassen.
Meine Interpretation des gesamten Vorgangs: beim Zusammensetzen des Dokuments vom Server ist das HTML zwar nicht valide, aber die Felder stehen innerhalb des form-Elements. Dann kommt der Browser und setzt das Formular-Ende an eine gültige Stelle, die input-Elemente bleiben aber dem Formular zugeordnet, obwohl sie sich außerhalb befinden. Wenn ich nun nachträglich input-Elemente generiere und außerhalb des Formulars in das DOM einhänge, werden diese Felder richtigerweise nicht übertragen.
Meine Lösung: ich generiere per PHP in der Tabelle eine "Leerzeile" für neue Einträge. Das ist äußerst suboptimal, aber es funzt ;-) Die Entscheidung stammt vom Auftraggeber. Eine Korrektur des Vorsystems wäre zu umfangreich und würde ich mir auch nicht auflasten wollen.
Gruß Fabulit