2011-10-22 82 views
2

我正在研究一个项目,我被这个问题困住了:我有一个名为$ category的变量,如果它为空或为空,则设置为1.提交表单后,$ category ++,因此它变成2。好的,但在第三次提交时,它不会变成3.我检查了会发生什么,并且我发现实际上在每次提交之后,$ category变为1,因为第一个代码行说如果它为空或空为让我给你看看代码,看看我在说什么!预先感谢您的帮助! :)如何在表单提交后停止变量重置?

session_start(); 

include_once('db.php'); 

$cat_SQL = 'SELECT * FROM categories ORDER BY id'; 
$cat_RESULT = mysql_query($cat_SQL, $conn); 
$cat_ROWS = mysql_fetch_assoc($cat_RESULT); 
$cat_ROWS_number = mysql_num_rows($cat_RESULT); 

if (is_null($category) || empty($category)) { 
    $category = 1; 
} 

if (isset($category)) { 
    if ($category < $cat_ROWS_number) { 
     $category = $category + 1; echo $category; 
    } 
} 

所以,如果我每次都附和类的页面加载,我有这样的事情:

你进入页面第一次:所以它变成1 => $类别类是空= 1 第二次提交$ category = $ category + 1 => $ category = 2(仍然是2而不是3) 等等之后提交第一个提交$ category = $ category + 1 => $ category = 2 ... :( 每次页面重新加载/提交时,如何阻止$ category成为'1',并且成为新值(每个会话)?


所以我最终设法做到这一点看到你的答案之前(不是吹牛,但很高兴,我发现自己的答案:)))

if (!isset($_SESSION['category'])) { 
    $_SESSION['category'] = 1; 
    $category = $_SESSION['category']; 
} 
else { 
     if($_SESSION['category'] < $cat_ROWS_number) { 
      $_SESSION['category']++; 
      $category = $_SESSION['category']; 
     } 
} 

但是,感谢大家的快速作出回应! ! :)

回答

2

这样做的一种方法是将$ category放入会话变量中。在session_start后但之前if (is_null($category) || empty($category))你就把:

if(isset($_SESSION['category'])) 
    $category = $_SESSION['category']; 

再经过$category = $category + 1;你就把:

$_SESSION['category'] = $category; 

这应该做的伎俩。

+0

非常感谢! :)这正是我最终使用的,然后当我看到你的回复时,我知道我在会议中做了最好的事情。无论如何,谢谢! ;) – Robert

+0

没问题:)从来没有疼痛的帮助。会议对于这类事情是完美的。感谢您将我的答案标记为解决方案! – toon81

0

或者在您的表单中添加一个隐藏字段,您可以将当前类别计入。

+0

“他们”希望我没有隐藏的领域。因为这就是我第一次使用:)) – Robert

+1

但是你必须告诉他们“会议的解决方案,当你回到页面,你可能会开始类123号,因为你最后一次访问:-)) – Marc

+1

会议默认约半小时后过期。隐藏输入“解决方案”的缺点是,网站在切换屏幕时会忘记当前类别。 – toon81