Php 如果用户未从下拉菜单中选择,如何显示回声
在下面的代码中,我有两个下拉菜单。一个是“课程”下拉菜单,另一个是“模块”下拉菜单:Php 如果用户未从下拉菜单中选择,如何显示回声,php,Php,在下面的代码中,我有两个下拉菜单。一个是“课程”下拉菜单,另一个是“模块”下拉菜单: <?php // connect to the database include('connect.php'); /* check connection */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); die
<?php
// connect to the database
include('connect.php');
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
die();
}
$course = isset($_POST['course']) ? $_POST['course'] : '';
$sql = "
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.CourseId, m.ModuleId
";
$sqlstmt=$mysqli->prepare($sql);
$sqlstmt->bind_param("s",$course);
$sqlstmt->execute();
$sqlstmt->bind_result($dbCourseId,$dbModuleId,$dbCourseName,$dbModuleName);
$moduleHTML = "";
while($sqlstmt->fetch()) {
$moduleHTML .= "<option value='$dbModuleId'>" . $dbModuleId . " - " . $dbModuleName . "</option>".PHP_EOL;
}
echo $moduleHTML;
$sqlstmt->execute();
?>
代码如下:
<?php
// connect to the database
include('connect.php');
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
die();
}
$sql = "SELECT CourseId, CourseName FROM Course ORDER BY CourseId";
$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" onchange="getModules();">'.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>';
$moduleHTML = "";
$moduleHTML .= '<select name="modules" id="modulesDrop">'.PHP_EOL;
$moduleHTML .= '<option value="">Please Select</option>'.PHP_EOL;
$moduleHTML .= '</select>';
include('noscript.php');
?>
<script type="text/javascript">
function getModules() {
var course = jQuery("#coursesDrop").val();
jQuery('#modulesDrop').empty();
jQuery('#modulesDrop').html('<option value="">Please Select</option>');
jQuery.ajax({
type: "post",
url: "module.php",
data: { course:course },
success: function(response){
jQuery('#modulesDrop').append(response);
}
});
}
</script>
<h1>EDIT AN ASSESSMENT'S DATE/START TIME</h1>
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<table>
<tr>
<th>Course: <?php echo $courseHTML; ?></th>
<th>Module: <?php echo $moduleHTML; ?></th>
</tr>
</table>
<p><input id="moduleSubmit" type="submit" value="Submit" name="moduleSubmit" /></p>
</form>
<?php
if (isset($_POST['moduleSubmit'])) {
$sessionquery = "
SELECT SessionId, SessionDate, SessionTime, ModuleId, TeacherId
FROM Session
WHERE
(ModuleId = ? AND TeacherId = ?)
ORDER BY SessionDate, SessionTime
";
$sessionqrystmt=$mysqli->prepare($sessionquery);
// You only need to call bind_param once
$sessionqrystmt->bind_param("si",$moduleId,$userid);
// get result and assign variables (prefix with db)
$sessionqrystmt->execute();
$sessionqrystmt->bind_result($dbSessionId,$dbSessionDate,$dbSessionTime, $dbModuleId, $dbTeacherId);
$sessionqrystmt->store_result();
$sessionnum = $sessionqrystmt->num_rows();
if($sessionnum ==0){
echo "<p>Sorry, You have No Sessions under this Module</p>";
以下是HTML代码:
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<table>
<tr>
<th>Course: <?php echo $courseHTML; ?></th>
<th>Module: <?php echo $moduleHTML; ?></th>
</tr>
</table>
<p><input id="moduleSubmit" type="submit" value="Submit" name="moduleSubmit" /></p>
<div id="moduleAlert"></div>
</form>
您可以使用javascript执行此操作。在javascript中创建一个函数,您可以在其中检查每个字段是否已填充,是否可以像下面这样显示
<script type="text/javascript">
function validate()
{
if(document.dropdownmenuname.course.value=="")
{
alert("Please fill in your form");
document.dropdownmenuname.course.focus() ;
return false;
}
}
....
函数验证()
{
if(document.dropdownmenuame.course.value==“”)
{
提醒(“请填写您的表格”);
document.dropdownmenuame.course.focus();
返回false;
}
}
....
更改表单标签
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
模块ID的来源是什么?大概它应该来自$\u POST
['modules']`但是我们没有看到这些代码。@MichaelBerkowski模块下拉菜单位于一个单独的页面上,称为module.php,这是通过jquery访问的。这方面的代码我现在已经包含在问题中,你是否在某处调用“validation”函数?@mali303不太清楚,我应该如何以及在哪里调用validation()函数?我在javascript代码中包含了类似的内容,但不是显示警报,而是显示了一个字符串。问题是我无法显示字符串。我在问题下方添加了一个更新,其中显示了javascript代码和HTML,你能看到我的代码有什么问题吗?为什么不起作用?谢谢,我能问一点吗?我能问一点吗?如果我有单选按钮,我能用phpempty
检查服务器端是否没有选择单选按钮吗?是的,同样,可以在服务器端验证无线电。
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post" onsubmit="return validation();">
<?php
if (isset($_POST['moduleSubmit'])) {
if(empty($_POST['courses']) && empty($_POST['modules'])) {
echo 'Please Select a Course and Module';
} elseif(empty($_POST['courses'])) {
echo 'Please Select a Course';
} elseif(empty($_POST['modules'])) {
echo 'Please Select a module';
} else {
$sessionquery = "
SELECT SessionId, SessionDate, SessionTime, ModuleId, TeacherId
FROM Session
WHERE
(ModuleId = ? AND TeacherId = ?)
ORDER BY SessionDate, SessionTime
";
$sessionqrystmt=$mysqli->prepare($sessionquery);
// You only need to call bind_param once
$sessionqrystmt->bind_param("si",$moduleId,$userid);
// get result and assign variables (prefix with db)
$sessionqrystmt->execute();
$sessionqrystmt->bind_result($dbSessionId,$dbSessionDate,$dbSessionTime, $dbModuleId, $dbTeacherId);
$sessionqrystmt->store_result();
$sessionnum = $sessionqrystmt->num_rows();
if($sessionnum ==0){
echo "<p>Sorry, You have No Sessions under this Module</p>";
}