Hulud
Hulud

Reputation: 35

PHP Submitting array to POST fails

When i try to submit this simple test form to PHP:

<form action="test.php" method="post">
<input  name ="lang_learn[0]lang" type="text" value="1"><br>
<input  name ="lang_learn[0]level" type="text" value="2"><br>
<input  name ="lang_learn[1]lang" type="text" value="3"><br>
<input  name ="lang_learn[1]level" type="text" value="4"><br>
<input type="submit">
</form>

i expect to have in the $_POST array something like this:

Array
(
[lang_learn] => Array
    (
        [0] => Array ([lang] => 1, [level] => 2)
        [1] => Array ([lang] => 3, [level] => 4)
    )

)

instead i get this:

Array
(
[lang_learn] => Array
    (
        [0] => 1
        [1] => 4
    )

)

i tried with different installations over different servers, and i always get the same result. where is the problem? reading around this should be the right way to do that.

Upvotes: 1

Views: 130

Answers (5)

S.Thiongane
S.Thiongane

Reputation: 6905

Your syntax is not correct: name ="lang_learn[0]lang" must be name ="lang_learn[0][lang]"

Upvotes: 0

7ochem
7ochem

Reputation: 2340

You probably need to do this:

<form action="test.php" method="post">
<input  name ="lang_learn[0][lang]" type="text" value="1"><br>
<input  name ="lang_learn[0][level]" type="text" value="2"><br>
<input  name ="lang_learn[1][lang]" type="text" value="3"><br>
<input  name ="lang_learn[1][level]" type="text" value="4"><br>
<input type="submit">
</form>

Upvotes: 2

Phill Sparks
Phill Sparks

Reputation: 20899

You need to use sub-arrays, like you would in PHP. Each key should be surrounded with [ and ]. Try this...

<form action="test.php" method="post">
<input  name ="lang_learn[0][lang]" type="text" value="1"><br>
<input  name ="lang_learn[0][level]" type="text" value="2"><br>
<input  name ="lang_learn[1][lang]" type="text" value="3"><br>
<input  name ="lang_learn[1][level]" type="text" value="4"><br>
<input type="submit">
</form>

Upvotes: 4

Jon
Jon

Reputation: 437376

The names of the input fields need fixing:

<input  name ="lang_learn[0][lang]" type="text" value="1"><br>
<input  name ="lang_learn[0][level]" type="text" value="2"><br>
<input  name ="lang_learn[1][lang]" type="text" value="3"><br>
<input  name ="lang_learn[1][level]" type="text" value="4"><br>

Upvotes: 4

Nikhil Mohan
Nikhil Mohan

Reputation: 891

Try this,

<form action="test.php" method="post">
<input  name ="lang_learn[0][lang]" type="text" value="1"><br>
<input  name ="lang_learn[0][level]" type="text" value="2"><br>
<input  name ="lang_learn[1][lang]" type="text" value="3"><br>
<input  name ="lang_learn[1][level]" type="text" value="4"><br>
<input type="submit">
</form>

Upvotes: 2

Related Questions