-1

重複の可能性:
正しいページ番号を表示するには?

以下のコードは、ユーザーが現在参加しているアセスメントと、ユーザーが現在参加しているアセスメント番号を判断するコードです。

<h1>CREATING QUESTIONS AND ANSWERS: ASSESSMENT <?php echo $sessionMinus ?> OF <?php echo $_SESSION['initial_count'] ?></h1>

したがって、ブラウザでは、たとえば次のように表示されます。

CREATING QUESTIONS AND ANSWERS: ASSESSMENT 1 OF 4

下に送信ボタンがあります。

<input id="addQuestionBtn" name="addQuestion" type="button" value="Add Question" onClick="insertQuestion(this.form)" />

ユーザーがボタンをクリックすると、確認ボックスが表示されます。ユーザーが確認のために [OK] をクリックすると、ページが送信され、それを示すために評価に数値が追加されます。ユーザーは次の評価を受けています。

例:

ページに次のように記載されている場合:

CREATING QUESTIONS AND ANSWERS: ASSESSMENT 1 OF 4

ユーザーがページを送信して確認すると、次のように表示されます。

CREATING QUESTIONS AND ANSWERS: ASSESSMENT 2 OF 4

これは、ユーザーが現在次の評価を受けているためです。

しかし問題は、ユーザーがページを送信したときに番号がまったく追加されないことです。「1」にとどまり、加算されません。したがって、上記を実行する代わりに、以下を実行しています。

ページに次のように記載されている場合:

CREATING QUESTIONS AND ANSWERS: ASSESSMENT 1 OF 4

ユーザーがページを送信して確認すると、次のように表示されます。

CREATING QUESTIONS AND ANSWERS: ASSESSMENT 1 OF 4

これは明らかに間違っています。

だから私の質問は、なぜそれが数を合計していないのか誰かが知っているということですか? 私は自分のコードをテストしたので、php が問題ではないことを知っています。私が見つけたのは、jquery 関数がない場合validation()、コードは正常に動作し、1 以降の数値を追加することです。

しかし、必要なjquery関数を含めるとvalidation()、数値がまったく追加されず、1のままになります。

誰でもこの問題を助けて解決できますか?

ここでアプリケーションを自分でテストできます。以下の手順に従ってください。

  1. テキストボックスに5番のリンクタイプを開いてページを送信すると
  2. 次のページに移動すると、上部に が表示されますCREATING QUESTIONS AND ANSWERS: ASSESSMENT 1 OF 5。ページの一番下までスクロールし、[詳細を送信] ボタンをクリックして、確認ボックスを確認します。
  3. 見出しにCREATING QUESTIONS AND ANSWERS: ASSESSMENT 1 OF 5CREATING QUESTIONS AND ANSWERS: ASSESSMENT 2 OF 5.

以下は関連するコードなので、コードが何であるかがわかります。

<?php

session_start();


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

            $_SESSION['initial_count'] = $_POST['sessionNum'];
            $_SESSION['sessionNum'] = intval($_POST['sessionNum']);
            $_SESSION['sessionCount'] = 1;

    }

elseif (isset($_POST['submitDetails']) && $_SESSION['sessionCount'] < $_SESSION['sessionNum']) {
    $_SESSION['sessionCount']++;
}


$sessionMinus =  $_SESSION['sessionCount'];

if ($sessionMinus == $_SESSION['initial_count']){ 

    $action = 'create_session2.php'; 

}elseif($sessionMinus != $_SESSION['initial_count']){ 

    $action = $_SERVER['PHP_SELF']; 

}

?>

<script type="text/javascript">


function validation() {

    var _qid = "";
    var _msg = "";

    var alertValidation = "";
    // Note, this is just so it's declared...
    $("tr.optionAndAnswer").each(function() {


        _qid = $("td.qid",this).text();
        _msg = "You have errors on Question Number: " + _qid + "\n";

        $(".textAreaQuestion",this).each(function() {



            if (!this.value || this.value.length < 5) {
                alertValidation += "\n\u2022 You have not entered a valid Question\n";
            }

            if (alertValidation != "") {
                return false; //Stop the each loop 
            }
        });

               if(alertValidation != ""){
            return false;
        }

        });


    if (alertValidation != "") {
        alert(_msg + alertValidation);
        return false;
    }

    return true;

}




             function showConfirm(){

         var confirmMsg=confirm("Make sure that your details are correct, once you proceed after this stage you would not be able to go back and change any details towards Questions, Options and Answers for your Session." + "\n" + "\n" + "Are you sure you want to Proceed?" + "\n" );

         if (confirmMsg==true)
         {
         submitform();   
     }
}

         function submitform()
{
    var fieldvalue = $("#QandA").val();
    $.post("insertQuestion.php", $("#QandA").serialize() ,function(data){
        var QandAO = document.getElementById("QandA");
        QandAO.submit();
    });  
    alert("Your Details for this Session has been submitted"); 
}




</script>

</head>

<body>

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

<h1>CREATING QUESTIONS AND ANSWERS: ASSESSMENT <?php echo $sessionMinus ?> OF <?php echo $_SESSION['initial_count'] ?></h1>

<p><input id="submitBtn" name="submitDetails" type="submit" value="Submit Details" onClick="myClickHandler(); return false;" /></p>

</form>

         <script type="text/javascript">

function myClickHandler(){
     if(validation()){
                showConfirm();
     }
}

</script>
4

2 に答える 2

0

送信後、このコードが実行されます。

if(isset($_POST['sessionNum'])){
  ...
  $_SESSION['sessionCount'] = 1;
}

$sessionMinus =  $_SESSION['sessionCount'];

これがブラウザに表示されます。

<h1>
  CREATING QUESTIONS AND ANSWERS: ASSESSMENT 
  <?php $sessionMinus ?> OF <?php echo $_SESSION['initial_count'] ?>
</h1>

$sessionMinus の結果は常に 1 です!!

于 2012-09-14T17:50:20.637 に答える
-1

これは有効なステートメントではないと思います:

$_SESSION['sessionCount']++;

次のように設定する必要があると思います。

$_SESSION['sessionCount'] = $_SESSION['sessionCount'] + 1;

于 2012-09-14T17:46:39.460 に答える