先生が前のドロップダウンメニューから選択したモジュールに応じて、試験(セッション)を取得しようとしています。
例えば:
ドロップダウンから選択されたモジュール: CHI2332(ModuleId)Advanced Database Systems(ModuleName)
ドロップダウンに表示されるExam(Session):
AAA(SessionId)24-04-2012(SessionDate)11:00:00(Session Time)
ARF(SessionId)13-06-2012(SessionDate)14:00:00(Session Time)
EFT(SessionId)10-09- 2012(SessionDate)09:00:00(Session Time)
これらの試験はモジュールのドロップダウンメニューから選択したmoduleIdと一致し、これらの試験のTeacherIdはこのページにログインしているTeacher Usernameに属しているため、上記の試験がドロップダウンメニューに表示されます。
問題は、[試験]ドロップダウンメニューでは、モジュールがそれらの試験に正当であるにもかかわらず、試験が見つからないように見えるため、ドロップダウンメニューにそれらの試験を表示する必要があることです。
代わりに、以下のエラーを出力するだけです。
Sessions: Notice: Undefined variable: sessionHTML in /.../ on line 178
必要なときにドロップダウンメニューに試験を表示するにはどうすればよいですか?
以下はデータベーステーブルです。
セッションテーブル:
SessionId SessionDate SessionTime ModuleId
AAA 24-04-2012 11:00:00 CHI2332
ARF 13-06-2012 14:00:00 CHI2332
EFT 10-09-2012 09:00:00 CHI2332
モジュールテーブル:
ModuleId ModuleName
CHI2332 Advanced Database Systems
以下はphp/mysqliコードです。
<?php
// connect to the database
include('connect.php');
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
die();
}
$courseid = (isset($_POST['courseid'])) ? $_POST['courseid'] : '';
?>
<h1>DELETING AN ASSESSMENT</h1>
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<p>Course ID: <input type="text" name="courseid" /><input id="courseSubmit" type="submit" value="Submit" name="submit" /></p>
</form>
<?php
if (isset($_POST['submit'])) {
$query = "
SELECT cm.CourseId, cm.ModuleId,
c.CourseName,
m.ModuleName
FROM Course c
INNER JOIN Course_Module cm ON c.CourseId = cm.CourseId
JOIN Module m ON cm.ModuleId = m.ModuleId
WHERE
(c.CourseId = ?)
ORDER BY c.CourseName, m.ModuleId
";
$qrystmt=$mysqli->prepare($query);
// You only need to call bind_param once
$qrystmt->bind_param("s",$courseid);
// get result and assign variables (prefix with db)
$qrystmt->execute();
$qrystmt->bind_result($dbCourseId,$dbModuleId,$dbCourseName,$dbModuleName);
$qrystmt->store_result();
$num = $qrystmt->num_rows();
if($num ==0){
echo "<p>Sorry, No Course was found with this Course ID '$courseid'</p>";
} else {
$dataArray = array();
while ( $qrystmt->fetch() ) {
// data array
$dataArray[$dbCourseId]['CourseName'] = $dbCourseName;
$dataArray[$dbCourseId]['Modules'][$dbModuleId]['ModuleName'] = $dbModuleName;
// session data
$_SESSION['idcourse'] = $dbCourseId;
$_SESSION['namecourse'] = $dbCourseName;
}
foreach ($dataArray as $courseId => $courseData) {
$output = "";
$output .= "<p><strong>Course:</strong> " . $courseId . " - " . $courseData['CourseName'] . "</p>";
$moduleHTML = "";
$moduleHTML .= '<select name="module" id="modulesDrop">'.PHP_EOL;
$moduleHTML .= '<option value="">Please Select</option>'.PHP_EOL;
foreach ($courseData['Modules'] as $moduleId => $moduleData) {
$moduleHTML .= "<option value='$moduleId'>" . $moduleId . " - " . $moduleData['ModuleName'] ."</option>".PHP_EOL;
}
}
$moduleHTML .= '</select>';
echo $output;
}
?>
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<p>Module: <?php echo $moduleHTML; ?><input id="moduleSubmit" type="submit" value="Submit" name="modulesubmit" /></p>
</form>
<?php
}
if (isset($_POST['modulesubmit'])) {
var_dump($_POST['modulesDrop']);
$sessionquery = "
SELECT SessionId, SessionDate, SessionTime, ModuleId
FROM Session
WHERE
(ModuleId = ?)
ORDER BY SessionDate, SessionTime
";
$sessionqrystmt=$mysqli->prepare($sessionquery);
// You only need to call bind_param once
$sessionqrystmt->bind_param("s",$_POST['modulesDrop']);
// get result and assign variables (prefix with db)
$sessionqrystmt->execute();
$sessionqrystmt->bind_result($dbSessionId,$dbSessionDate,$dbSessionTime, $dbModuleId);
$sessionqrystmt->store_result();
$sessionnum = $sessionqrystmt->num_rows();
$dataArraySession = array();
while ( $sessionqrystmt->fetch() ) {
$dataArraySession[$dbModuleId]['Sessions'][$dbSessionId]['SessionDate'] = $dbSesisonDate['SessionTime'] = $dbSessionTime;
}
foreach ($dataArraySession as $sessionId => $sessionData) {
$sessionHTML = "";
$sessionHTML .= '<select name="session" id="sessionsDrop">'.PHP_EOL;
$sessionHTML .= '<option value="">Please Select</option>'.PHP_EOL;
$sessionHTML .= "<option value='$sessionId'>" . $sessionId . " - " . $sessionData['SessionDate']. " - " . $sessionData['SessionTime'] ."</option>".PHP_EOL;
$sessionHTML .= '</select>';
}
if ($sessionnum > 0) {
?>
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<p>Sessions: <?php echo $sessionHTML; ?><input id="sessionSubmit" type="submit" value="Submit" name="sesionsubmit" /></p>
</form>
<?php
}
else {
echo "<p>Sorry, You have No Sessions under this Module</p>";
}
}
?>
アプリケーションへのリンクはこちら:アプリケーション