jquery函数我相信搞乱了php函数

时间:2012-09-14 17:41:12

标签: php jquery

  

可能重复:
  How to display the correct page number?

我在下面有一段代码,用于确定用户所处的评估以及用户当前所在的评估编号:

<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)" />

现在,如果用户点击该按钮,它将显示一个确认框,如果用户点击确定,进行确认,那么它将提交页面,并且假设发生的是它为评估添加了一个数字表示用户正在进行下一次评估。

例如:

如果在页面上显示:

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。

有人可以帮忙解决这个问题吗?

您可以自行测试应用here,只需按照以下步骤操作:

  1. 当您在文本框中打开第5个链接类型并提交页面
  2. 当您导航到下一页时,您会看到顶部显示CREATING QUESTIONS AND ANSWERS: ASSESSMENT 1 OF 5。现在滚动到页面底部,然后单击“提交详细信息”按钮并确认确认框。
  3. 您会看到标题仍然显示CREATING QUESTIONS AND ANSWERS: ASSESSMENT 1 OF 5而非CREATING QUESTIONS AND ANSWERS: ASSESSMENT 2 OF 5
  4. 以下是相关代码,以便您知道代码是什么:

    <?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>
    

2 个答案:

答案 0 :(得分: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 !!

答案 1 :(得分:-1)

我认为这不是一个有效的陈述:

$_SESSION['sessionCount']++;

我认为你需要这样设置:

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