dedlfix: Vielen Dank euch allen

Beitrag lesen

Tach!

Du hast dich entschieden, das HTML so zu lassen und stattdessen die Zugehörigkeiten über einen gemeinsamen Indexwert wiederherzustellen. Kann man so machen. Trotzdem kann man den Code noch optimieren. Den $counter braucht es nicht, wenn du eine foreach-Schleife verwendest:

könntest du mir vielleicht an einem Beispiel zeigen, wie ich es auch anderes machen hätte können und mir sagen was die Vor bzw. Nachteile sind?

Das Ohne-$counter/foreach-Version hab ich ja schon in meiner vorigen Antwort beschrieben. Der Vorteil ist "nur" eingesparter Code. Meiner ist tatsächlich sogar länger, dafür bringt er aber schon die für den korrekten Kontextwechsel nötige Funktionalität mit, die deinem Code noch fehlt.

Die Variante mit dem umgebauten HTML hatte ich in meiner ersten Antwort aufgeführt. Der Vorteil wäre, dass du nicht zwei Teil-Arrays parallel und synchron befragen musst, sondern in einem Durchlauf mit nur einem Zugriff beide Werte zusammen in einem Array stehen hast. Zugriff ungefährt so:

foreach ($_POST['ef_wasweißich'] as $eintrag) {  
  echo $eintrag['bezeichnung'];  
  echo $eintrag['entfernung'];  
}

Dein HTML muss dazu dann so aussehen:

<input name="ef_wasweißch[0][bezeichnung]" value="..." ...> und  
<input name="ef_wasweißch[0][entfernung]" value="..." ...>

Nachteil ist, dass du selbständig nummerieren muss. Die beiden 0 hier müssen für den nächsten Datensatz 1, dann 2 und so weiter sein. Es können auch andere Werte sein, Hauptsache sie sind pro Datensatz gleich und verschieden zu den anderen. Diese Felder tauchen in obigem foreach nicht auf, weil sie nicht benötigt werden. Wenn du sie sehen willst, dann muss das foreach so aussehen:

foreach ($_POST['ef_wasweißich'] as $key => $eintrag)  

Die 0, 1 etc. stehen dann in $key.

dedlfix.