2012-03-01 2 views
0

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

, например ...

<?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); 
    } 

ответ

1

Параметры передаются в виде массива. Поэтому вам нужно проанализировать запрошенные переменные

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

<?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); 
} 
+0

Вам не нужно анализировать параметры, и вы специально не хотели бы зависеть от всех возможных параметров, которые могли бы возникнуть в '$ _GET'. – Christian

+0

Кристиан Я также знаю это, но он хочет, чтобы тот же самый массив посылал так, чтобы массив, который он получает напрямую через метод $ _GET, поэтому просто подчеркиваю метод $ _GET. –

+0

Просто потому, что он работает, это не значит, что он хорошо написан. Существует много более разумных способов избежать этой проблемы, например, путем префикса индексов массива. Ослепление слепого содержания в $ _GET является серьезной проблемой. – Christian

1

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

$foo = $_GET ; 

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

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

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 
) 

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

Смежные вопросы