【问题标题】:Where to place code in order to display details from a query result在哪里放置代码以显示查询结果的详细信息
【发布时间】:2012-12-24 03:05:14
【问题描述】:

我很难知道哪些代码应该放在哪些页面中。

我想要做的是:

  • addstudentsession.php 页面中,用户从#sessionsDrop 下拉菜单中选择评估

  • 每次从下拉菜单中选择评估时(或者换句话说,每次更改下拉菜单中的选项时),它都会对单独的页面 addedstudents.php 执行 ajax 调用以执行查询查看哪些学生参加了所选的评估。

  • 从查询结果中进行评估的学生应该显示在addstudentsession.php的多选框中(如果用户没有选择评估,我仍然想要一个空白的多选在addstudentsession.php中显示的框

我的问题应该是每个代码的位置应该能够执行此操作,因为我根本没有做到这一点。根本没有出现多选框,我得到了一个未定义的变量。

以下是当前addstudentsession.php页面:

下拉菜单:

$sessionHTML = '';

if($sessionnum ==0){
$pHTML = "<span style='color: red'>Sorry, You have No Assessments under this Module</span>";
} 

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

$studentInfo = array();

while ( $sessionqrystmt->fetch() ) {

$sessionHTML .= sprintf("<option value='%s'>%s - %s - %s</option>", $dbSessionId, $dbSessionName, date("d-m-Y",strtotime($dbSessionDate)), date("H:i",strtotime($dbSessionTime))) . PHP_EOL;    

}


$sessionHTML .= '</select>';

...

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

多选框:

//getting undefined error below of studentSELECT
     $moduleexist="
        <form id='moduleExistForm'>
        <p><strong>Current Students in Chosen Assessment:</strong></p>
        <p>{$studentSELECT}</p>
        </form> 
        </div>";

        echo $moduleexist;

Ajax 调用:

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

下面是当前的addedstudents.php 页面,它在其中执行查询并在选择框中列出详细信息:

<?php

$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($currentassessmentqry);
// You only need to call bind_param once
$currentstudentstmt->bind_param("ii",$sessionsdrop, $stuentactive);
// 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();   


$term = $_POST['studenttextarea'];


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

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

}

$studentSELECT .= '</select>';

?>

【问题讨论】:

    标签: php jquery ajax mysqli


    【解决方案1】:

    在您的addedstudents.php 中,您必须返回值$studentSELECT。添加一个

    echo $studentSELECT
    

    在你的 PHP 结束时。

    您也永远不会在 PHP 代码中的任何地方使用$term = $_POST['studenttextarea'];。此外,$sessionsdrop 没有定义,$stuentactive 可能是一个错字($studentactive)。 $currentstudentqry$currentassessmentqry 也是如此。

    【讨论】:

    • 就像我说的那样,我真的把事情搞砸了 :) 我正在尝试遵循这个 SO 问题的答案link,但我一点也不明白
    • @user1881090 然后开始在addstudents.php中回显一些固定的字符串,看看ajax是否有效。然后从那里继续前进,将其他问题一一解决。
    • 会做的,谢谢你的帮助 :) 错别字严重错误,抱歉,我需要多加注意
    • 当您在 chrome 中(例如)时,右键单击页面并单击检查元素然后转到控制台可以帮助您调试 javascript 错误
    • @OlafDietsche 已成功修复页面并使其正常工作,再次感谢
    猜你喜欢
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多