2010-11-18 84 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