0

送信に問題があります。2つの評価があるとしましょう。

  • FGTRE1
  • FGTRE2

ユーザーが最初に評価1を完了し、評価1を送信してから、同じページに移動しますが、今回は評価2の詳細が表示されます。評価がどのように変更されるかを知るために、このコード行があります。ページの見出しを表示します。

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

したがって、最初の評価ではこれが表示されます。

評価(FGTRE1)1/2

そして、2番目の評価は次のように表示されます。

評価(FGTRE2)2/2

私が抱えている問題は、ユーザーが最初の評価を正常に送信すると、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>

Jquery:

$(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

Ok, I think I have the problem. You seem to be defining $_SESSION['sessionNum'] in session_start and only checking for next session in else, $_SESSION['sessionNum'] will be active always.

Try this code:

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 に答える