2012-10-27 166 views
0

我的應用程序出現了一些奇怪的現象。以下是我的代碼,其中用戶在課程輸入中輸入文本並提交文本輸入。如果它從數據庫中找到課程,那麼它會顯示找到該課程的迴音,否則表示課程未找到。現在,它適用於所有瀏覽器(IE,Opera,Safari,Firefox和Chrome)。下面是該代碼:在Chrome,Firefox和Safari中工作但不在IE或Opera中的代碼

<h1>CREATING A NEW 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>  <!-- Enter User Id here--> 
</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 { 

echo "<p>Course Found: '$courseid'</p>"; 

} 

但現在我已經決定改變在文本輸入courseID的設置,以便代替打字,他們可以選擇從下拉菜單中選擇一個過程ID。所以,我的代碼更改爲下面這樣:

$sql = "SELECT CourseId, CourseName FROM Course"; 

$sqlstmt=$mysqli->prepare($sql); 

$sqlstmt->execute(); 

$sqlstmt->bind_result($dbCourseId, $dbCourseName); 

$courses = array(); // easier if you don't use generic names for data 

$courseHTML = ""; 
$courseHTML .= '<select name="courses" id="coursesDrop">'.PHP_EOL; 
$courseHTML .= '<option value="">Please Select</option>'.PHP_EOL; 

while($sqlstmt->fetch()) 
{ 
$course = $dbCourseId; 
$coursename = $dbCourseName; 
$courseHTML .= "<option value='".$course."'>" . $course . " - " . $coursename . "</option>".PHP_EOL; 
} 

$courseHTML .= '</select>'; 
$courseHTML .= '</form>'; 

?> 

<h1>CREATING A NEW ASSESSMENT</h1> 

<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post"> 
<table> 
<tr> 
<th>Course: <?php echo $courseHTML; ?><input id="courseSubmit" type="submit" value="Submit" name="submit" /></th> 
</tr> 
</table> 
</form> 

<?php 
if (isset($_POST['submit'])) { 

$submittedCourseId = $_POST['courses']; 

$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",$submittedCourseId); 
// 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 style='color: red'>Please Select a Course</p>"; 
} else { 

echo "<p style='color: green'>Course Found '$courseid'</p>"; 

} 

但是,這是奇怪的事情,在下拉菜單中的Chrome,Firefox和Safari的作品,但不是在Opera和IE瀏覽器。那麼我的問題是,在第二塊代碼中是否存在阻止它在IE或Opera中工作的東西?

+0

您正在輸出兩個''標籤,其中一個標籤在提交按鈕之前。刪除這個'$ courseHTML。=''; ' – air4x

回答

0

刪除$courseHTML .= '</form>';,它會工作。

事實是,當您將</form>添加到$coureseHTML並將其添加到邊窗體中時。表單結束標籤完成表單。而其餘的代碼不屬於表單。這裏,<input id="courseSubmit" type="submit" value="Submit" name="submit" />不屬於前面的表格。所以點擊這個按鈕不會工作。它不應該在任何瀏覽器中工作。可能是由於運氣,它在鉻,firefox和safari上工作。

相關問題