0

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

   <?php echo $sessionMinus ?> OF <?php echo $_SESSION['initial_count'] ?>

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

1 OF 4

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

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

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

例:

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

1 OF 4

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

2 OF 4

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

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

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

1 OF 4

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

1 OF 4

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

validation()私は自分のコードをテストしましたが、jqueryが原因で数値が加算されず、「1」にとどまる場合があることがわかりました。しかし、私の質問は、なぜこの jquery 関数がこれを引き起こしているのかということです。

以下はjqueryvalidation()関数です。

function validation() {

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

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

        });


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

    return true;

}

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

    <?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() {

            });


        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><?php echo $sessionMinus ?> OF <?php echo $_SESSION['initial_count'] ?></h1>

    <div id="detailsBlock">


<table id="questionBtn" align="center">
<tr>
<th>
<input id="addQuestionBtn" name="addQuestion" type="button" value="Add Question" onClick="insertQuestion(this.form)" />
</th>
</tr>
</table>

</div>
<hr/>

<div id="details">
<table id="qandatbl" align="center">
<thead>
<tr>
    <th class="question">Question</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>

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

アップデート:

以下は、insertQuestion() 関数のコードです。

function insertQuestion(form) {   


    var $tbody = $('#qandatbl > tbody'); 
    var $tr = $("<tr class='optionAndAnswer' align='center'>");
    var $image = $("<td class='image'></td>"); 


var $fileImage = $("<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='return imageClickHandler(this);' class='imageuploadform' >" + 
    "<p class='imagef1_upload_process' align='center'>Loading...<br/><img src='Images/loader.gif' /><br/></p><p class='imagef1_upload_form' align='center'><br/><label>" + 
    "Image File: <input name='fileImage' type='file' class='fileImage' /></label><br/><br/><label class='imagelbl'>" + 
    "<input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /></label>" + 
    "<iframe class='upload_target' name='upload_target' src='#' style='width:0;height:0;border:0px;solid;#fff;'></iframe></form>");     

    $image.append($fileImage);


    $tr.append($image);  
    $tbody.append($tr); 



}
4

1 に答える 1

0

sessionCount が設定されていないかどうかを確認したいと思います (!isset)。次のようにコードを調整してみてください。

if(!isset($_POST['sessionCount'])){
            //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']++;
}
于 2014-09-23T03:53:22.340 に答える