0

我的提交有问题。假设我有两个评估:

  • FGTRE1
  • FGTRE2

假设发生的是用户将首先完成评估 1,提交评估 1,然后他们将被导航到同一页面,但这次它显示评估 2 的详细信息。要知道评估是如何更改的,我有这行代码显示页面的标题:

<h1>ASSESSMENT (<?php echo $assessment ?>) <?php echo $sessionMinus ?> OF <?php echo $_SESSION['initial_session'] ?></h1>   

因此,它显示的第一个评估是:

评估 (FGTRE1) 1 / 2

第二次评估应显示:

评估 (FGTRE2) 2 的 2

我遇到的问题是当用户成功提交第一个评估时,它不会继续显示第二个评估,它仍然显示第一个评估的详细信息。

看了下面的代码,我的疑问是,为什么第一次测评提交成功后,页面没有加载第二次测评内容,而是仍然显示了第一次测评内容?

我确实包含了 php 错误报告,并且没有 php 错误,并且错误控制台中也没有 javascript 错误:

PHP:

<?php

session_start();

if (isset($_POST['id'])) {
    $_SESSION['id'] = $_POST['id'];
}

if(isset($_SESSION['sessionNum'])){
    //Declare my counter for the first time

    $_SESSION['initial_session'] = $_SESSION['sessionNum'];
    $_SESSION['sessionNumber'] = intval($_SESSION['sessionNum']);
    $_SESSION['sessionCounting'] = 1;
} elseif (isset($_POST['submitMarks']) && $_SESSION['sessionCounting'] < $_SESSION['sessionNumber']) {
    $_SESSION['sessionCounting']++;
}

$sessionMinus =  $_SESSION['sessionCounting'];
$sessionConcat =  $_SESSION['sessionCounting'];

if ($sessionMinus == $_SESSION['initial_session']){ 
    $action = 'penalty.php'; 
} elseif($sessionMinus != $_SESSION['initial_session']){ 
    $action = $_SERVER['PHP_SELF']; 
}

$assessment = $_SESSION['id'];

if ($_SESSION['initial_session'] > 1) {
    $assessment .= $sessionConcat;
}

?>

HTML:

<body>

<form id="Marks" action="<?php echo htmlentities($action); ?>" method="post">

<h1>ASSESSMENT (<?php echo $assessment ?>) <?php echo $sessionMinus ?> OF <?php echo $_SESSION['initial_session'] ?></h1>   

<input id="submitBtn" name="submitMarks" type="submit" value="Submit Marks" />

</form>

</body>

查询:

$(function() {  

...

myClickHandler = function(e) {
       var ng = $('#num_groups').val();
       for (var group = 1; group <= ng; group++) {
         if (!validation(group)) return false;
       }
       if (confirm("Are you sure you want to Proceed?" + "\n")) {
         $.ajax({
           url: "insertmarks.php",
           data: $("#Marks").serialize(),
           async: false,
           type: "POST"
         });
         return true;
      } else {
        return false;
      }
    };

    $('#Marks').submit(myClickHandler);

});

});
4

1 回答 1

1

好的,我想我有问题。您似乎正在定义$_SESSION['sessionNum']并且session_start只检查下一个会话else$_SESSION['sessionNum']将始终处于活动状态。

试试这个代码:

if(isset($_SESSION['sessionNum'])){
    //Declare my counter for the first time

    $_SESSION['initial_session'] = $_SESSION['sessionNum'];
    $_SESSION['sessionNumber'] = intval($_SESSION['sessionNum']);
    $_SESSION['sessionCounting'] = 1;
} 

if (isset($_POST['submitMarks']) && $_SESSION['sessionCounting'] < $_SESSION['sessionNumber']) {
    $_SESSION['sessionCounting']++;
}
于 2013-01-09T11:42:04.943 回答