PHP-Arrays vs. JavaScript-Arrays in Forms

Uhhhh, das war echt ne harte Nuss, die mich da eine Weile beschäftigt hat. Alte Coder werden mich jetzt auslachen, ist mir aber egal, ich denke schon, dass der ein oder andere auch auf dieses Problem stoßen könnte und nach einer Lösung sucht. Also, worum geht’s?

In HTML kann man in einem Form z.B. ein Array in der Art

<input type=“text“ name=“meinArray[]“ value=“1234″/>
<input type=“text“ name=“meinArray[]“ value=“5678″/>
<input type=“text“ name=“meinArray[]“ value=“9012″/>

erzeugen, d.h. im Array meinArray gibt es die Elemente meinArray[0], meinArray[1] und meinArray[2] jeweils mit den Werten „1234“,„5678“ und „9012“.

Über PHP kann man ja auf die einzelnen Elemente prima zugreifen, z.B. so:

$meinArray = $_POST[‚meinArray‘];
for ($i=0; $i<count($meinArray); $i++) {
echo „Wert in meinArray an der Stelle“ . $i . “ = “ . $meinArray[$i];
}

oder auch so:

foreach($_POST[‚meinArray‘] as $key=>$value) {
echo $key.‘ ‚.$value;
}

Wer jetzt glaubt, er könnte das in JavaScript so ähnlich machen, hat sich geschnitten. Etwas in der Form (hier nur beispielhaft)

var meinArray = document.forms[0].meinArray;
for ($i=0; $i<meinArray.length; $i++) {
alert( „Wert in meinArray an der Stelle“ + i + “ = “ + meinArray[i]; // oder auch noch .value hinten dran, ist aber egal, geht eh nicht.
}

funktioniert einfach nicht. Richtig ist hingegen das hier:

var meinArray = document.forms[0].elements[„meinArray[]“];
for(i=0;i<meinArray.length;i++) {
alert( ‚Wert in meinArray an der Stelle‘ + i + ‚ = ‚+ meinArray[i].value);
}

Siehe auch http://de.selfhtml.org/javascript/objekte/elements.htm. Hat ne Weile gedauert, bis ich dahinter gestiegen bin.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.