1

どのコードがどのページに配置されるべきかを知るのに大きな問題があります。

私がやろうとしていることは次のとおりです。

  • addstudentsession.phpページで、ユーザーはドロップダウン メニューから評価を選択し#sessionsDropます

  • ドロップダウン メニューから評価が選択されるたびに (つまり、ドロップダウン メニューでオプションが変更されるたびに)、別のページへの ajax 呼び出しをaddedstudents.php実行してクエリを実行し、選択した評価にどの学生が含まれているかを確認します。 .

  • クエリの結果から評価を受けている学生は、複数選択ボックスに表示される必要があります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>';

?>
4

1 に答える 1

0

あなたaddedstudents.phpは value を返さなければなりません$studentSELECT。を追加

echo $studentSELECT

PHPの最後に。

$term = $_POST['studenttextarea'];また、PHP コードのどこにも使用しないでください。さらに$sessionsdropはどこにも定義されておらず、$stuentactiveおそらくタイプミスです ( $studentactive)。$currentstudentqryvsについても同様$currentassessmentqryです。

于 2013-01-09T21:02:21.607 に答える