2016-05-27 3 views
0

У меня есть код в HTML, который устанавливает массивы значений, которые нужно передать через POST, но я не знаю, как получить к ним доступ в php-файле.

Это '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> 

В 'next.php', где HTML код передается у меня есть:

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

, который дает мне:

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 
       ) 

     ) 

) 

ответ

3

Вы можете использовать foreach, чтобы перебирать свойства, подобные это:

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

Если это возможно изменить макет HTML, я бы рекомендовал что-то вроде этого:

<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> 

Это делает его гораздо проще получить доступ и перебирать свойства элемента:

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

Если возможно, вам необходимо установить стол следующим образом:

<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> 

, а затем повторите попытку $ _POST следующим образом:

$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++; 
} 
Смежные вопросы