<label> mit <input name="foo[]">. Kleine Denkhilfe benötigt

somunium

somunium

Aktives Mitglied
Thread Starter
Dabei seit
16.01.2008
Beiträge
523
Reaktionspunkte
35
Hallo zusammen.


Ich bin dabei ein mehr oder minder dynamisches Formular zu erstellen, bei dem mehrere gleichartige Sätze abgeschickt werden sollen.

Gedacht war für die 'name'-Attribute der Felder ein Konstrukt ala
HTML:
<input name="feldname[]">
um das ganze später auch in PHP als Array ansprechen zu können. Zudem sollten via JS neue 'Reihen' für weitere Datensätze hinzukommen (Das Formular soll also mitwachsen)

Gleichzeitig wollte ich aber 'label'-Elemente für die Feldbeschriftungen benutzen. Bei denen gibt man dann ja aber den Wert des 'name'-Attribut an, damit die logische Zuordnung passt.
Wenn ich jetzt aber mehrere solcher Inputfeldgruppen habe, haben die im HTML ja auch alle die selben Namen.
Beispiel:
HTML:
<label for="foo[]"><input name="foo[]">
<label for="foo[]"><input name="foo[]">
Da hätten wir zwei Inputfelder mit dem selben Namen, die dann auch in den Labels benutzt werden. Ist dem erstem Label jetzt klar, dass es zum ersten input gehört?
Kommen die da nicht durcheinander?
Nicht, dass sie sich nachher streiten, welches Label jetzt zu welchem Inputfeld gehört, einen Krieg anzetteln und ich das ganze Internet zerstöre :eek:

;)

(Ich bin mir Sicher, dass ich grad nur irgendwo einen kleinen Denkfehler hab, weil es einfach zu lange her ist, dass ich sowas gemacht hab, aber ich komm nicht dahinter)

Mag mir da mal jemand einen kleinen Stubs in die richtige Richtung geben?
Und falls die Richtung mit G anfängt, währen ein paar passende Suchbegriffe auch nicht schlecht. Zum Beispiel, wie der Fachbegriff für die Methode mit den Eckigen Klammern lautet, damit die Formularergebnisse bei PHP als Array ankommen (Autodydaktisches Problem :hum:. Abgucken kann man viel, aber mitreden dann noch lange nicht)

Uff donn
Lukas
 
Warum nummerierst Du die Namen der Inputfelder nicht durch?

HTML:
<label for="foo[1]"><input name="foo[1]">
<label for="foo[2]"><input name="foo[2]">

Für den Empfang per PHP macht das keinen Unterschied – das würde bei Deiner bisherigen Schreibweise ja eh ein numerisches Array aus foo machen – und auch beim »Mitwachsen« via JavaScript sollte es kein Problem sein, den Zähler immer hochzusetzen.
 
Das Problem ist gar kein Problem, weil sich das for="xxx" auf eine ID bezieht.

HTML:
<input type="text" name="satz[]" value="" id="satz1" /><label for="satz1">Satz1</label>
<input type="text" name="satz[]" value="" id="satz2" /><label for="satz2">Satz2</label>
 
Zurück
Oben Unten