2010-11-18 59 views
0

我試圖做一個頁面,需要一個表單提交,並添加內容作爲$ _SESSION()數組中的新值,但似乎發生的事情雖然是價值正在被覆蓋。

該表單有3個名爲a,b和c的文本輸入並刷新提交頁面。告訴我它被替換的是$ _SESSION [0]將顯示如下定義的1和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 2010-11-18 13:15:21

回答

3

訪問它的值在我看來,你正在試圖添加一個新的數組到一個新的$ _SESSION var每tim e表格已提交。您正在使用的方法只會將該值添加到該頁面加載的$ _SESSION數組中 - 它實際上不會在$ _SESSION數組中!混淆權利?因此,無論這些都不行......

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

但這種意願,因爲那裏是文本在$ _SESSION鍵(不要忘了啓動會話)。

session_start(); 
$next = count($_SESSION) + 1; 
$next = 'foo' . $next; 
$_SESSION[$next] = 'bar' . $next; 

這將爲「print_r($ _ SESSION)」生成以下代碼。

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

你是男性之神!我不認爲你有任何鏈接或任何解釋爲什麼$ _SESSION鍵中缺少文本會阻止它工作,所以我可以教育自己,而不是再次遇到它?再次感謝。 – BigRob 2010-11-18 13:49:07

+0

它與$ _SESSION是一個超全局的,所以每個鍵也必須是一個有效的變量名(即$ 1是一個無效變量)。在此處查看第四條評論http://uk.php.net/manual/en/reserved.variables.session.php#85147 – 2010-11-18 20:42:33

2

添加表單值的最簡單的方法是

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

然後使用

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

好吧,可以工作,但如何增加第二,第三等表單提交,例如$ _SESSION('form1','form2','form3'....) 這就是爲什麼我使用$ _SESSION [],所以它將每個提交添加爲另一個值的數組,但我不明白爲什麼它會取代以前的值? – BigRob 2010-11-18 13:33:25

+0

@Bigrob,你可以在會話中分配不同的表單名稱,比如'$ _SESSION ['frm_News']','$ _SESSIOn ['frm_artitle']' – Starx 2010-11-19 06:15:03