确认后如何运行UPDATE和SELECT语句?

时间:2012-11-13 10:24:54

标签: php jquery

我有一个应用程序,用户在相关的文本输入中显示他们的评估名称,日期和时间。现在发生的情况是,当用户提交表单时,它会显示确认信息。

以下是代码(editsessionadmin.php):

 <script>
    function showConfirm(){

    var examInput = document.getElementById('newAssessment').value;
    var dateInput = document.getElementById('newDate').value;
    var timeInput = document.getElementById('newTime').value;

    var confirmMsg=confirm("Are you sure you want to update the following:" + "\n" + "Exam: " + examInput +  "\n" + "Date: " + dateInput + "\n" + "Time: " + timeInput);

    }


    </script>   

    <?php

    $sessionquery = "
    SELECT SessionId, SessionName, SessionDate, SessionTime, ModuleId
    FROM Session
    WHERE
    (ModuleId = ?)
    ORDER BY SessionName 
    ";

    $sessionqrystmt=$mysqli->prepare($sessionquery);
    // You only need to call bind_param once
    $sessionqrystmt->bind_param("s",$moduleId);
    // get result and assign variables (prefix with db)

    $sessionqrystmt->execute(); 

    $sessionqrystmt->bind_result($dbSessionId,$dbSessionName,$dbSessionDate,$dbSessionTime, $dbModuleId);

    $sessionqrystmt->store_result();

    $sessionnum = $sessionqrystmt->num_rows();   

    if($sessionnum ==0){
    echo "<p>Sorry, You have No Assessments under this Module</p>";
    } else { 

    $sessionHTML = '<select name="session" id="sessionsDrop">'.PHP_EOL;
    $sessionHTML .= '<option value="">Please Select</option>'.PHP_EOL;  

    while ( $sessionqrystmt->fetch() ) {
       if(time() > strtotime($dbSessionDate." ".$dbSessionTime)){
             $class = 'red';
        } else {
             $class = 'green';
        }
    $sessionHTML .= sprintf("<option value='%s' style='color: %s'>%s - %s - %s</option>", $dbSessionId, $class, $dbSessionName, date("d-m-Y",strtotime($dbSessionDate)), date("H:i",strtotime($dbSessionTime))) . PHP_EOL;  
    }


    $sessionHTML .= '</select>';


    $assessmentform = "<form action='".htmlentities($_SERVER['PHP_SELF'])."' method='post'>
    <p><strong>Assessments:</strong> {$sessionHTML} </p>   
    </form>";

    echo $assessmentform;

    }



    $editsession = "<form action=".htmlentities($_SERVER['PHP_SELF'])." method='post' id='updateForm'>

        <p><strong>New Assessment's Date/Start Time:</strong></p>
        <table>
        <tr>
        <th>Assessment:</th>
        <td><input type='text' id='newAssessment' name='Assessmentnew' readonly='readonly' value='' /> </td>
        </tr>
        <tr>
        <th>Date:</th> 
        <td><input type='text' id='newDate' name='Datenew' readonly='readonly' value='' /> </td>
        </tr>
        <tr>
        <th>Start Time:</th> 
        <td><input type='text' id='newTime' name='Timenew' readonly='readonly' value=''/><span class='timepicker_button_trigger'><img src='Images/clock.gif' alt='Choose Time' /></span> </td>
        </tr>
        </table>
        <div id='datetimeAlert'></div>

        <p><input id='updateSubmit' type='submit' value='Update Date/Start Time' name='updateSubmit' onClick='myClickHandler(); return false;'/></p>

        </form>
    ";

    echo $editsession;


    }

    ?>

    <script type="text/javascript">

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

    </script>

现在我想运行一个UPDATE命令,在用户确认确认并编译SELECT查询后更新数据库中的日期和时间,这样如果更新发生,那么回显就是成功,否则回显那里是一个错误。

我的问题首先是下面的代码是否正确,其次在哪里放置此代码,以便在确认确认后运行命令?

 <?php

    $sessionname = (isset($_POST['Assessmentnew'])) ? $_POST['Assessmentnew'] : ''; 
    $sessiondate = (isset($_POST['Datenew'])) ? $_POST['Datenew'] : ''; 
    $sessiontime = (isset($_POST['Timenew'])) ? $_POST['Timenew'] : ''; 

        $updatesql = "UPDATE Session SET SessionDate = ?, SessionTime = ? WHERE SessionName = ?";                                           
        $update = $mysqli->prepare($updatesql);
        $update->bind_param("sss", $sessiondate, $sessiontime, $sessionname);
        $update->execute();

       $query = "SELECT SessionName, SessionDate, SessionTime FROM Session WHERE SessionName = ?";
       // prepare query
       $stmt=$mysqli->prepare($query);
       // You only need to call bind_param once
       $stmt->bind_param("sss", $sessionname, $sessiondate, $sessiontime);
       // execute query
       $stmt->execute(); 
       // get result and assign variables (prefix with db)
       $stmt->bind_result($dbSessionName, $dbSessionDate, $dbSessionTime);
       //get number of rows
       $stmt->store_result();
       $numrows = $stmt->num_rows();

       if ($numrows == 1){

           echo "<span style='color: green'>Your Assessment's new Date and Time have been updated</span>";

       }else{

           echo "<span style='color: red'>An error has occurred, your Assessment's new Date and Time have not been updated</span>";
    ?>

更新

以下是editsessionadmin.php的代码

<script>
function showConfirm(){

var examInput = document.getElementById('newAssessment').value;
var dateInput = document.getElementById('newDate').value;
var timeInput = document.getElementById('newTime').value;

var confirmMsg=confirm("Are you sure you want to update the following:" + "\n" + "Exam: " + examInput +  "\n" + "Date: " + dateInput + "\n" + "Time: " + timeInput);

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

function submitform()
{

$.post("updatedatetime.php", $("#updateForm").serialize() ,function(data){
var updateFormO = document.getElementById("updateForm");
updateFormO.submit();
}); 

}
</script>   

<?php
    $sessionquery = "
        SELECT SessionId, SessionName, SessionDate, SessionTime, ModuleId
        FROM Session
        WHERE
        (ModuleId = ?)
        ORDER BY SessionName 
        ";

        $sessionqrystmt=$mysqli->prepare($sessionquery);
        // You only need to call bind_param once
        $sessionqrystmt->bind_param("s",$moduleId);
        // get result and assign variables (prefix with db)

        $sessionqrystmt->execute(); 

        $sessionqrystmt->bind_result($dbSessionId,$dbSessionName,$dbSessionDate,$dbSessionTime, $dbModuleId);

        $sessionqrystmt->store_result();

        $sessionnum = $sessionqrystmt->num_rows();   

        if($sessionnum ==0){
        echo "<p>Sorry, You have No Assessments under this Module</p>";
        } else { 

        $sessionHTML = '<select name="session" id="sessionsDrop">'.PHP_EOL;
        $sessionHTML .= '<option value="">Please Select</option>'.PHP_EOL;  

        while ( $sessionqrystmt->fetch() ) {
           if(time() > strtotime($dbSessionDate." ".$dbSessionTime)){
                 $class = 'red';
            } else {
                 $class = 'green';
            }
        $sessionHTML .= sprintf("<option value='%s' style='color: %s'>%s - %s - %s</option>", $dbSessionId, $class, $dbSessionName, date("d-m-Y",strtotime($dbSessionDate)), date("H:i",strtotime($dbSessionTime))) . PHP_EOL;  
        }

        $sessionHTML .= '</select>';

        $assessmentform = "<form action='".htmlentities($_SERVER['PHP_SELF'])."' method='post'>
        <p><strong>Assessments:</strong> {$sessionHTML} </p>   
        </form>";

        echo $assessmentform;

        }



        $editsession = "<form action=".htmlentities($_SERVER['PHP_SELF'])." method='post' id='updateForm'>

            <p><strong>New Assessment's Date/Start Time:</strong></p>
            <table>
            <tr>
            <th>Assessment:</th>
            <td><input type='text' id='newAssessment' name='Assessmentnew' readonly='readonly' value='' /> </td>
            </tr>
            <tr>
            <th>Date:</th> 
            <td><input type='text' id='newDate' name='Datenew' readonly='readonly' value='' /> </td>
            </tr>
            <tr>
            <th>Start Time:</th> 
            <td><input type='text' id='newTime' name='Timenew' readonly='readonly' value=''/><span class='timepicker_button_trigger'><img src='Images/clock.gif' alt='Choose Time' /></span> </td>
            </tr>
            </table>
            <div id='datetimeAlert'></div>

            <p><input id='updateSubmit' type='submit' value='Update Date/Start Time' name='updateSubmit' onClick='myClickHandler(); return false;'/></p>

            </form>
        ";

        echo $editsession;


        }

        ?>

        <script type="text/javascript">

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

        </script>

在上面的代码中,我添加了一个jquery / ajax函数submitform(),在确认后,它将在后台执行updatedatetime.php页面的帖子。它有显示更新和选择状态的位置。问题是它没有在editsessionadmin.php页面中进行更新或显示回声

以下是updatedatetime.php的代码:

    <?php

 // connect to the database
 include('connect.php');

  /* check connection */
  if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    die();
  }

    $sessionname = (isset($_POST['Assessmentnew'])) ? $_POST['Assessmentnew'] : ''; 
    $sessiondate = (isset($_POST['Datenew'])) ? $_POST['Datenew'] : ''; 
    $sessiontime = (isset($_POST['Timenew'])) ? $_POST['Timenew'] : ''; 

    $updatesql = "UPDATE Session SET SessionDate = ?, SessionTime = ? WHERE SessionName = ?";                                           
    $update = $mysqli->prepare($updatesql);
    $update->bind_param("sss", $sessiondate, $sessiontime, $sessionname);
    $update->execute();

    $query = "SELECT SessionName, SessionDate, SessionTime FROM Session WHERE SessionName = ?";
    // prepare query
    $stmt=$mysqli->prepare($query);
    // You only need to call bind_param once
    $stmt->bind_param("sss", $sessionname, $sessiondate, $sessiontime);
    // execute query
    $stmt->execute(); 
    // get result and assign variables (prefix with db)
    $stmt->bind_result($dbSessionName, $dbSessionDate, $dbSessionTime);
    //get number of rows
    $stmt->store_result();
    $numrows = $stmt->num_rows();

    if ($numrows == 1){

    echo "<span style='color: green'>Your Assessment's new Date and Time have been updated</span>";

    }else{

    echo "<span style='color: red'>An error has occured, your Assessment's new Date and Time have not been updated</span>";



            ?>

0 个答案:

没有答案