2010-11-18 20 views
0

私はフォーム提出を行い、その内容を$ _SESSION()配列の新しい値として追加しようとしています。値がオーバーライドされています。

フォームには、a、b、cという3つのテキスト入力があり、送信時にページが更新されます。 $ _SESSION [0]は以下のように1 2と3を表示し、$ _POSTで定義された次の行は同じになりますが、配列の値は最後に追加された値ではなく最後に提示された値に置き換えられます別の行として提出されます。

<form action="test2.php" method="post"> 
<input type="text" name="a"> 
<input type="text" name="b"> 
<input type="text" name="c"> 
<input type="submit" value="Submit"> 
</form> 

<?php 
    if (isset($_POST['a'])) 
    { 
    $a = $_POST['a']; 
    $b = $_POST['b']; 
    $c = $_POST['c']; 
    $order = array('a' => $a, 'b' => $b, 'c' => $c); 
    $_SESSION[0] = array('a' => 1, 'b' => 2, 'c' => 3); 
    $_SESSION[] = $order; 
    $count = count($_SESSION); 
    for ($i = 0; $i < $count; $i++) { 
     echo "w: " . $_SESSION[$i]['a'] . "\n"; 
     echo "h: " . $_SESSION[$i]['b'] . "\n"; 
     echo "p: " . $_SESSION[$i]['c'] . "\n"; 
     echo "<br />"; 
     } 
    } 
?> 

は、フォームの値を追加する おかげ

+0

あなたが結果として望むものを例として説明できますか?あなたのテキストは本当に明確ではありません... – Kennethvr

答えて

3

それを使用して値にアクセスし、任意の助けのために非常に感謝されますあなたが新しい$ _SESSION varに新しい配列を追加しようとしているように私に見えるeフォームが提出されます。使用しているメソッドは、そのページのロードの$ _SESSION配列に値を追加するだけです。実際には$ _SESSION配列にはありません!混乱する権利?したがって、これらのいずれかは、$ _SESSIONのキーに...

$_SESSION[] = 'value or array'; 
$_SESSION[1] = 'some other stuff'; 

しかし、この意志、原因そこにいるテキストは動作しません(とセッションを開始することを忘れないでください)。

"print_r($ _ SESSION)"の場合、以下のようになります。

Array ([foo1] => barfoo1 [foo2] => barfoo2 [foo3] => barfoo3 [foo4] => barfoo4... 
+0

のようなセッションで異なるフォーム名を割り当てます。私はあなたが$ _SESSIONキーのテキストの欠如が働くのを止めていたので、私は自分自身を教育し、もう一度それにぶつからない理由について何かを説明しているリンクや何かを持っているとは思わない?再度、感謝します。 – BigRob

+0

これはスーパーグローバルな$ _SESSIONと関係があり、すべてのキーも有効な変数名でなければなりません(つまり、$ 1は無効な変数です)。 http://uk.php.net/manual/en/reserved.variables.session.php#85147のコメントを参照してください。 –

2

ほとんどの最も簡単な方法は、

$_SESSION['form'] = $_POST; //once the form is posted 

だろうその後

$_SESSION['form']['fieldname']; 
+0

それはうまくいくかもしれませんが、$ _SESSION( 'form1'、 'form2'、 'form3' ....)のように、2番目、3番目のフォームの投稿を追加するとどうなりますか これはなぜ私が$ _SESSION []を使って各サブミッションを値の別の配列として追加するのですが、それが以前の値を置き換える理由はわかりません。 – BigRob

+0

@Bigrob、あなたは '$ _SESSION ['frm_News']'、 '$ _SESSIOn ['frm_artitle']' – Starx

関連する問題