Verschachtelte Formulare :)
Dookie
- html
Hi Leute,
jaja ich weiß, das Thema ist alt... :)
Aber ich hab trotzdem ein Problem mit verschachtelten Formularen und bekomme es trotz intensiver Suche hier im Forum/Archiv und im restlichen Netz nicht gelöst!
Viele schreiben immer, verschachtelte Formulare würden keinen Sinn ergeben. Tun sie aber sehr wohl. Und genau da liegt mein Problem:
Erstmal verwende ich die Formulare in meinen PHP-Seiten.
Nun möchte ich ein Hauptformular haben, in dem verschiedene Daten eingegeben werden können, ganz unten ein Submit-Button zum Abschicken an die Logik... soweit ganz einfach.
Weiter will ich aber gern innerhalb des Formulars Buttons für andere Funktionen haben, also eigenständige Formulare.
Dass immer nur ein Formular abgeschickt wird ist mir klar, aber ich würde gern nur das innerste Formular abschicken, falls das gewählt wird, und nicht die Infos des umschließenden Hauptformulars. Z.B. habe ich "innen" nur Navibuttons, die in meinem Frameset nur die "_self" Seite verändern. Das Hauptformular schickt seine Daten aber an "_parent".
Das ganze klingt seltsam, ist aber ganz trivial...
Ich denke mein Problem liegt in der fehlenden Entkopplung von Design und Logik.
Aber es muss doch ganz einfach machbar sein allein mit HTML oder?
Genauer: Ich habe verschiedenste Submit-Buttons die ich in der auswertenden PHP-Seite anhand des Namens unterscheide, das klappt prima... aber wenn ein inneres Formular abgeschickt wird, dann werden auch die hidden-Felder des umschließenden Hauptformulars mitgeschickt, und das schaffe ich nicht zu verhindern. :(
Genau das möchte ich gern möglichst einfach lösen. Nur mit HTML.
Zur Veranschaulichung hier ein bisschen vereinfachter Code:
---------------------------------------
<form action='index.php' target='_parent' method='post'>
<input type='hidden' name='is_search' value='true'>
<input type='text' size="120" name='autor' value=''>
<form action='index.php' target='_parent' method='post'>
<input type='hidden' name='is_query' value='true'>
<input type='submit' name='submit' value='Alle Datensätze laden'>
</form>
<form action='data.php' target='_self' method='get'><input type='hidden' name='id' value='2'><input type='submit' value='1'></form>
<form action='data.php' target='_self' method='get'><input type='hidden' name='id' value='10'><input type='submit' value='10'></form>
<input type='submit' name='submit' value='SUCHEN'>
</form>
---------------------------------------
Hat jemand eine Idee? bin für jede Hilfe sehr dankbar!
Gruß, Dookie
Hi!
Viele schreiben immer, verschachtelte Formulare würden keinen Sinn ergeben.
Das wage ich zu bezweifeln.
So wie du es anstellst, ergibt es (für mich) nicht nur keinen Sinn, sondern ist schlicht und einfach falsch.
Das Element "form" darf kein weiteres Element "form" enthalten.
Tun sie aber sehr wohl.
Glaube ich nicht...
Vielleicht hättest du ohne deine Verschachtelungen nicht so ein Chaos und vielleicht würde es dann auch funktionieren...
Und genau da liegt mein Problem:
Nein. Dein Problem liegt darin, daß dein Code grundsätzlich fehlerhaft ist.
Du darfst Formulare nicht in einander verschachteln.
Dein gesamtes Formularkonzept scheint mir irgendwie nicht wirklich durchdacht so sein.
Du solltest die Sache von Grund auf anders angehen.
Da ich leider aber überhaupt nicht verstehe, was du mit deiner Konstruktion bezwecken willst, kann ich dir hier allerdings nicht weiterhelfen.
Schöner Gruß,
rob
hi,
Viele schreiben immer, verschachtelte Formulare würden keinen Sinn ergeben. Tun sie aber sehr wohl.
Nein, tun sie nicht; _können_ sie nicht - per Definition.
Sie sind _nicht erlaubt_, ergo ist auch nicht definiert, wie ein Browser damit umzugehen hätte.
Weiter will ich aber gern innerhalb des Formulars Buttons für andere Funktionen haben, also eigenständige Formulare.
Warum sollten die deshalb eigentständig sein müssen?
Dass immer nur ein Formular abgeschickt wird ist mir klar, aber ich würde gern nur das innerste Formular abschicken, falls das gewählt wird, und nicht die Infos des umschließenden Hauptformulars. Z.B. habe ich "innen" nur Navibuttons, die in meinem Frameset nur die "_self" Seite verändern. Das Hauptformular schickt seine Daten aber an "_parent".
Warum navigierst du über Formulare?
Normale Links dürften in 99,9% der Fälle vorzuziehen sein.
Das ganze klingt seltsam, ist aber ganz trivial...
Nein, es ist hochgradig komplex - und dazu ist es von dir gemacht worden, in dem du nicht nur Formulare verschachtelt, sondern auch noch die Plage #1, Frames, ins Spiel gebracht hast.
Ich denke mein Problem liegt in der fehlenden Entkopplung von Design und Logik.
Dann behebe dieses bitte - anstatt nach "Lösungen" in der ungünstigsten, weil unsinnigsten, Ecke zu suchen.
Aber es muss doch ganz einfach machbar sein allein mit HTML oder?
Mit HTML allein - nein.
Wenn du CSS hinzunimmst, könntest du _optisch_ vielleicht den Efekt erreichen, dass die Formularelemente so _dargestellt_ werden, wie du es dir wünschst.
Genauer: Ich habe verschiedenste Submit-Buttons die ich in der auswertenden PHP-Seite anhand des Namens unterscheide, das klappt prima... aber wenn ein inneres Formular abgeschickt wird, dann werden auch die hidden-Felder des umschließenden Hauptformulars mitgeschickt, und das schaffe ich nicht zu verhindern. :(
Wenn stören denn diese hidden-Werte (abgesehen mal vom leicht höheren Traffic, wenn sie unbenötigt mitgesendet werden)?
Hat jemand eine Idee?
Erkenne, dass dein Vorhaben Murks ist, und dann lass den Murks bleiben.
Überlege dir, ob es überhaupt Formulare zu Navigationszwecken sein müssen (einen Grund für diesen Wunsch hast du nicht genannt - dieser ist dch hoffentlich nicht rein optischer Natur?) - ich halte es für reichlich unsinnig.
gruß,
wahsaga
Hi, danke erstmal für die Antworten.
Klar weiß ich dass der Codeschnipsel oben falsch ist (wegen den Forms), aber genau deshalb Frage ich ja hier nach Hilfe.
Der Sinn dabei ist ganz einfach:
Es gibt ein großes äußeres Formular, in dem man alle möglichen Daten eingeben kann, zum zwecke einer Datenbankverwaltung. (Die Daten werden an _parent verschickt, wo Datenbankabfragen gemacht werden)
Die inneren Formulare sind unter anderem Navigationsbuttons, um nur im _self durch einzelne in Sessionvariablen gespeicherte Werte zu navigieren.
Ich möchte gern Buttons und keine Links benutzen, weil das vom Auftraggeber so vorgeschrieben ist.
Genauso wie die Frames.
Weiterhin müssen die Buttons rechts von den auszufüllenden Formularfeldern sein, was das Problem erst verursachte. Vorher waren sie oben drüber und so ließen sich die Forms ohne Probleme trennen, aber jetzt stehen sie ineinander, weil das eine Anforderung an die Software ist.
Klar, jetzt habe ich erkannt, dass Design und Logik nicht getrennt sind... was ich aber auch nicht unbedingt will. Aber wie löse ich es denn besser?
Wie kann ich das Problem denn mit CSS umgehen, sodass es optisch so aussieht wie ich es haben will?
Achso, und der zusätzliche Overhead den ich bekomme wenn alle hidden-Felder mitgesendet werden ist nicht das Problem dabei, sondern dass ich mit den hidden-Felder erkennen wollte, welches Formular abgeschickt wurde (da sie ja verschachtelt sind))
hi,
Es gibt ein großes äußeres Formular, in dem man alle möglichen Daten eingeben kann, zum zwecke einer Datenbankverwaltung. (Die Daten werden an _parent verschickt, wo Datenbankabfragen gemacht werden)
Clientseitige Fensterobjekte machen keine Datenbankabfragen. Du mienst vermutlich, dass serverseitig Datenbankabfragen gemacht werden, und deren Antwort in _aprent dargestellt werden.
Die inneren Formulare sind unter anderem Navigationsbuttons, um nur im _self durch einzelne in Sessionvariablen gespeicherte Werte zu navigieren.
Ich möchte gern Buttons und keine Links benutzen, weil das vom Auftraggeber so vorgeschrieben ist.
Was genau hat er "vorgeschrieben"?
Die Technik, oder die Optik?
Wenn technik - mit welcher Begründung?
Genauso wie die Frames.
Mit welcher Begründung?
Weiterhin müssen die Buttons rechts von den auszufüllenden Formularfeldern sein, was das Problem erst verursachte. Vorher waren sie oben drüber und so ließen sich die Forms ohne Probleme trennen, aber jetzt stehen sie ineinander, weil das eine Anforderung an die Software ist.
An welche Software?
Klar, jetzt habe ich erkannt, dass Design und Logik nicht getrennt sind... was ich aber auch nicht unbedingt will.
Klar willst du. Oder willst du bewusst Murks abliefern?
Wie kann ich das Problem denn mit CSS umgehen, sodass es optisch so aussieht wie ich es haben will?
U.U. mittels absoluter Positionierung.
Wenn du danach aber erst noch fragen musst - dann ist vermutlich auch wieder davon abzuraten, weil gerade absolute Programmierung für Anfänger in ihren Auswirkungen oftmals schwer komplett zu überschauen ist.
Achso, und der zusätzliche Overhead den ich bekomme wenn alle hidden-Felder mitgesendet werden ist nicht das Problem dabei, sondern dass ich mit den hidden-Felder erkennen wollte, welches Formular abgeschickt wurde (da sie ja verschachtelt sind))
Die Formulare sind nicht verschachtelt, also machen sie auch kein Problem.
Wenn du serverseitig je nach gedrücktem Absendebutton des Formulars (dem für die _wirkliche_ Datenverarbeitung meine ich, nicht dem welche jetzt hoffentlich nicht mehr als Navigationsmöglichkeit missbraucht wird) andere Aktionen ausführen willst - dann mache dies vom Namen und/oder Wert des benutzten Submitbuttons abhängig.
gruß,
wahsaga