получить массив с другой страницы, отправленный формой - PullRequest
0 голосов
/ 02 марта 2012

Я хотел бы передать массив из формы, изменив его значения (входные данные). пользователь может изменять значения входов, как можно получить измененный массив?

например ...

  <?php $vector = array("product1" => 150, "product2" => 120); ?>
  <table>
  <form action="page2.php" method="get">

  <?php foreach ($vector as $key => $value) { 
 echo "<tr><td>Product: $name</td><td><input type='text' name='$key' 
     value='$value'/>  
     </td>";
  }
  <tr>
<td><input type="submit" name="process" value="Submit" /></td>
  </tr>
  </form>
  </table>
  ?>

  // on the other page...page2.php

  if (isset($_GET['process'])){ 
 $foo = $_GET[$vector]; // the array i want
 echo var_dump($foo);
  }

Ответы [ 3 ]

2 голосов
/ 02 марта 2012

HTTP по своей конструкции разрешает массивы через POST / GET. Просто укажите связанные элементы с одинаковым именем и заканчивая двумя противоположными квадратными скобками, например:

<input type="text" name="data[]" value"First"/>
<input type="text" name="data[]" value"Second"/>

А на сервере ...

print_r($_REQUEST['data']);

Печать ...

Array
(
    [0] => First
    [1] => Second
)

Довольно удобно, хм?

1 голос
/ 02 марта 2012

Параметры передаются в виде массива.Таким образом, вы должны проанализировать запрошенные переменные

Вот пересмотренная версия вашего кода.

<?php $vector = array("product1" => 150, "product2" => 120); ?>
  <table>
  <form action="page2.php" method="get">

  <?php foreach ($vector as $key => $value) { 
 echo "<tr><td>Product: $name</td><td><input type='text' name='$key' 
     value='$value'/>  
     </td>";
  }
  <tr>
<td><input type="submit" name="process" value="Submit" /></td>
  </tr>
  </form>
  </table>
  ?>

  // on the other page...page2.php

  if (isset($_GET['process'])){ 
    unset($_GET['process']);
    $foo = $_GET ;
    echo var_dump($foo);
 }
1 голос
/ 02 марта 2012

Попробуйте просто сделать это

$foo = $_GET ;

Если вы не хотите, чтобы «процесс» был в массиве, сначала вызовите

unset($_GET['process']);
...