0

I have my code in HTML that is setting the arrays of the values to pass via POST but I don't know how to access them in the php file.

This is 'main.php':

<tr> <td><input name="item[0][item]" type="text" id="item" size="5" /></td> <td><input name="price[0][price]" type="text" id="price" size="5" /></td> <td><input name="order_date[0][order_date]" type="text" id="order_date" size="5" /></td> </tr> <tr> <td><input name="item[1][item]" type="text" id="item" size="5" /></td> <td><input name="price[1][price]" type="text" id="price" size="5" /></td> <td><input name="order_date[1][order_date]" type="text" id="order_date" size="5" /></td> </tr> 

At 'next.php' where the HTML code is sent I have:

echo "<pre>"; print_r($_POST); echo "</pre>"; 

which gives me:

Array ( [item] => Array ( [0] => Array ( [item] => item1 ) [1] => Array ( [item] => item2 ) ) [price] => Array ( [0] => Array ( [price] => 80.00 ) [1] => Array ( [price] => 59.99 ) ) [order_date] => Array ( [0] => Array ( [order_date] => 2016-05-01 ) [1] => Array ( [order_date] => 2016-05-31 ) ) ) 
0

2 Answers 2

3

You can use a foreach to iterate the properties like this:

foreach ($_POST['item'] as $i=>$item) { $name = $item['item']; $price = $_POST['price'][$i]['price']; $order_date = $_POST['order_date'][$i]['order_date']; } 

If it's possible to change your HTML layout, I would recommend something like this:

<tr> <td><input name="items[0][name]" type="text" id="item" size="5" /></td> <td><input name="items[0][price]" type="text" id="price" size="5" /></td> <td><input name="items[0][order_date]" type="text" id="order_date" size="5" /></td> </tr> <tr> <td><input name="items[1][name]" type="text" id="item" size="5" /></td> <td><input name="items[1][price]" type="text" id="price" size="5" /></td> <td><input name="items[1][order_date]" type="text" id="order_date" size="5" /></td> </tr> 

This makes it much easier to access and iterate the item's properties:

foreach ($_POST['items'] as $item) { $name = $item['name']; $price = $item['price']; $order_date = $item['order_date']; } 
Sign up to request clarification or add additional context in comments.

Comments

0

If possible, you have to set your table like this:

<tr> <td><input name="item[]" type="text" id="item" size="5" /></td> <td><input name="price[]" type="text" id="price" size="5" /></td> <td><input name="order_date[]" type="text" id="order_date" size="5" /></td> </tr> 

and then iterate the $_POST like this:

$i = 0; $totalNum = 2; while ($i <= $totalNum) { echo "item: ".$_POST['item'][$i]; echo "price: ".$_POST['price'][$i]; echo "order date: ".$_POST['order_date'][$i]; $i++; } 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.