表单提交后如何阻止变量重置?

Rob*_*ert 4 php forms variables session submit

我正在开发一个项目,我遇到了这个问题:我有一个名为 $category 的变量,如果为 null 或为空,则设置为 1。提交表单后,$category++,所以它变成 2。好的,但在第三次提交时,它并没有变成 3。我检查了发生的情况,发现实际上每次提交后,$category 都会变成 1,因为第一行代码表示如果它为 null 或空,它就会变成 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,如果我在每次加载页面时回显该类别,我会得到如下内容:

第一次进入页面:类别为空,因此变为 1 => $category = 1 After 1st SUBMIT $category = $category + 1 => $category = 2 After 2nd SUBMIT $category = $category + 1 => $category = 2(仍然是 2,而不是变成 3)等等...:( 每次页面重新加载/提交时,如何阻止 $category 变成“1”,并变成新值(每个会话)?


所以我最终在看到你的答案之前成功做到了(不是吹牛,而是很高兴我自己找到了答案:)))

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

不过还是谢谢大家的快速回复!!!:)

too*_*n81 5

一种方法是将 $category 放入会话变量中。在您放置之后session_start但之前if (is_null($category) || empty($category))

if(isset($_SESSION['category']))
    $category = $_SESSION['category'];
Run Code Online (Sandbox Code Playgroud)

然后在$category = $category + 1;你输入之后:

$_SESSION['category'] = $category;
Run Code Online (Sandbox Code Playgroud)

这应该能解决问题。