2012-03-01 8 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によって配列を許可します。単純に同じ名前の関連項目を持っているので、同様に、二つの対向する角括弧で終わる:

print_r($_REQUEST['data']); 

プリントを...

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

、サーバー上の

...

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

かなり便利ですか?

関連する問題