![](/img/trans.png)
[英]Session variable working in IE and Safari, but not Chrome, Opera or Firefox?
[英]Code working in Chrome, Firefox and Safari but not in IE or Opera
我的应用程序发生了一些奇怪的事情。 下面是我的代码,其中在courseid到文本输入的用户类型和提交的文本输入。 如果它从数据库中找到了该课程,那么它会显示找到该课程的回显,否则它指出未找到该课程。 现在,它可以在所有浏览器(IE,Opera,Safari,Firefox和Chrome)上运行。 下面是此代码:
<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>";
}
但是,现在我决定更改设置,因此他们可以从下拉菜单中选择课程ID,而不必在文本输入中输入courseID。 所以我将代码更改为此:
$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的工作停止它的第二个代码块?
删除$courseHTML .= '</form>';
,它将起作用。
事实是,当您向$coureseHTML
添加</form>
并将其添加到表单旁边时。 表单结束标记完成表单。 并且其余的代码不属于表单。 在此, <input id="courseSubmit" type="submit" value="Submit" name="submit" />
不属于先前的形式。 因此,单击此按钮将不起作用。 它不应在任何浏览器中运行。 运气可能是它在Chrome,Firefox和Safari上的工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.