Lukas Pleva
Lukas Pleva

Reputation: 381

How would I create this array structure in an HTML form?

I have the following HTML form, which is being generated dynamically from a table in a MySQL database.

<form method="post" name="chapters" action="ChaptersUpdate.php">
<input type='text' name='id' value='{$row['id']}'>
<input type='text' name='name' value='{$row['name']}'>
<input type='password' name='password' value={$row['password']};>
<input type='submit'>
</form>

I am looking for a way to make it such that when the form is submitted, the following data structure gets passed in $_POST:

 [chapter] => Array
  (
    [0] => Array
        (
            [id] => corresponding chapter ID
            [name] => corresponding chapter name
            [password] => corresponding chapter password
        )

    [1] => Array
        (
            [id] => corresponding chapter ID
            [name] => corresponding chapter name
            [password] => corresponding chapter password
        )

)

I tried various combinations of name='chapter[][id]' / name='chapter[][name]' / name='chapter[][password]' with little success. The array data structure never looks like what I want it to look like.

Any ideas?

Upvotes: 4

Views: 1335

Answers (2)

Daedalus
Daedalus

Reputation: 7722

The following appeared to work for me:

<input type='text' name='chapters[0][id]'>
<input type='text' name='chapters[0][name]'>
<input type='password' name='chapters[0][password]'>

<input type='text' name='chapters[1][id]'>
<input type='text' name='chapters[1][name]'>
<input type='password' name='chapters[1][password]'>

Upvotes: 2

Baba
Baba

Reputation: 95101

You can simply create your form like this

<form method="post" name="chapters">
<?php 
for($i = 0; $i <3; $i++)
{
    echo "ID: <input type='text'  name='chapters[$i][id]' /> <br />";
    echo "Name: <input type='text' name='chapters[$i][name]' /> <br />";
    echo "Password: <input type='text' name='chapters[$i][password]' /> <br /> ";
    echo "<Br />";
}
?>
<input type='submit'>
</form>

Sample PHP

if(isset($_POST['chapters']))
{
    echo "<pre>";
    print_r($_POST['chapters']);
}

Sample Output

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => Name1
            [password] => Password1
        )

    [1] => Array
        (
            [id] => 2
            [name] => name 2
            [password] => password 2
        )

    [2] => Array
        (
            [id] => 2
            [name] => name 3
            [password] => Password
        )

)

Upvotes: 0

Related Questions