【问题标题】:It is not able to display list of details in select box无法在选择框中显示详细信息列表
【发布时间】:2013-01-09 22:40:37
【问题描述】:

addstudentsession.php我下面有一个下拉菜单,其中包含考试列表,我还有一个空的多选框和一个空的多选框:

    //FROM VIEW SOURCE:

        <select name="session" id="sessionsDrop">
        <option value="">Please Select</option>
        <option value='20'>EWYGC - 10-01-2013 - 09:00</option>
        <option value='22'>WDFRK - 11-01-2013 - 10:05</option>
        <option value='23'>XJJVS - 12-01-2013 - 10:00</option>
        <option value='21'>YANLO - 11-01-2013 - 09:00</option>
        <option value='24'>YTMVB - 12-01-2013 - 03:00</option>
        </select> </p> 

    //FROM CODE:

    $studentSELECT = "";  
    $studentSELECT .= '<select name="studenttextarea" id="studentselect" size="6">';
    $studentSELECT .= '</select>'; 

//AJAX CODE:

         $(document).ready( function(){


        $('#sessionsDrop').change( function(){
            var search_val = $(this).val();
            $.post("addedstudents.php", 
            {studenttextarea : search_val}, 
            function(data){
   if (data.length>0){ 
     $("#studentselect").html(data); 
   } 
)};

现在假设发生的是,当从下拉菜单中选择考试时,将激活 ajax 调用并导航到单独的 php 页面,在该页面中运行查询以查看当前有多少学生在评估中。如果没有 0 名学生,则表示该评估中没有学生,否则将显示考试中每个学生的别名和姓名。

但我遇到的问题是,如果我选择一个我知道目前有学生在评估中的评估,它仍然会显示评估中没有学生的消息,而不是实际显示学生的别名和姓名列表.我的问题是为什么它可以列出评估中的学生,而只是继续显示没有学生的消息?

我知道该查询是正确的,因为我已经在 phpmyadmin 中测试了该查询并且它工作正常。是不是下面addedstudents.php代码的问题:

$session = isset($_POST['session']) ? $_POST['session'] : '';

$studentactive = 1;

$currentstudentqry = "
SELECT
ss.SessionId, st.StudentId, st.StudentAlias, st.StudentForename, st.StudentSurname
FROM
Student_Session ss 
INNER JOIN
Student st ON ss.StudentId = st.StudentId
WHERE
(ss.SessionId = ? and st.Active = ?)
ORDER BY st.StudentAlias
";

$currentstudentstmt=$mysqli->prepare($currentstudentqry);
// You only need to call bind_param once
$currentstudentstmt->bind_param("ii",$session, $studentactive);
// get result and assign variables (prefix with db)

$currentstudentstmt->execute(); 

$currentstudentstmt->bind_result($dbSessionId,$dbStudentId,$dbStudentAlias,$dbStudentForename,$dbStudentSurname);

$currentstudentstmt->store_result();

$studentnum = $currentstudentstmt->num_rows();   


$studentSELECT = "";     

if($studentnum == 0){

$studentSELECT .= "<option disabled='disabled' class='red' value=''>No Students currently in this Assessment</option>"; 


}else{   

while ( $currentstudentstmt->fetch() ) {

$studentSELECT .= sprintf("<option disabled='disabled' value='%s'>%s - %s s</option>", $dbStudentId, $dbStudentAlias, $dbStudentForename, $dbStudentSurname) . PHP_EOL; 
}

}

echo $studentSELECT;

【问题讨论】:

    标签: php jquery ajax mysqli


    【解决方案1】:

    $.post() 中,您发送的是studenttextarea,但在addedstudents.php 中,您正在检查isset($_POST['session']),所以$session ==''

    更改$.post() =>

     {session : search_val}, 
    

    或者

    addedstudents.php =>

    $session = isset($_POST['studenttextarea']) ? $_POST['studenttextarea'] : '';
    

    【讨论】:

      【解决方案2】:

      您似乎没有设置 $_POST['session']

      使用 firebug 查看 AJAX 页面返回的内容,并转储您的 $_POST 数据。您似乎只是在“studenttextarea”中发帖。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-24
        • 1970-01-01
        • 2014-07-15
        • 2011-08-01
        • 2019-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多