嗨,我正在开发一个 php 下拉列表,它从数据库中提取其记录。我已经完成了第一个和第二个下拉菜单的工作。然而,我需要帮助实现第三个下拉菜单。这是我到目前为止所拥有的。前 2 个工作正常。我真的需要让第三个工作发挥作用。它依赖于第一个和第二个的输入。
index.php
<?php
require_once("dbcontroller.php");
$query ="SELECT * FROM campus";
?>
<html>
<head>
<TITLE>Campus and Faculty Select</TITLE>
<head>
<style>
body{width:610px;}
.frmDronpDown {border: 1px solid #F0F0F0;background-color:#C8EEFD;margin: 2px 0px;padding:40px;}
.demoInputBox {padding: 10px;border: #F0F0F0 1px solid;border-radius: 4px;background-color: #FFF;width: 50%;}
.row{padding-bottom:15px;}
</style>
<script src="jquery.min.js" type="text/javascript"></script>
<script>
function getcampus_id(val) {
$.ajax({
type: "POST",
url: "get_faculty.php",
data:'campus_id='+val,
success: function(data){
$("#faculty-list").html(data);
}
});
}
function getfaculty_id(val) {
alert(val)
$.ajax({
type: "POST",
url: "get_course.php",
data:'faculty_id='+val,
success: function(data){
$("#course-list").html(data);
}
});
}
function selectcampus_id(val) {
$("#search-box").val(val);
$("#suggesstion-box").hide();
}
</script>
</head>
<body>
<form id="rightcol" action="form.php" method="post" class="container">
<div class="frmDronpDown">
<div class="row">
<label>Campus:</label><br/>
<select name="campus" id="campus-list" class="demoInputBox" onChange="getcampus_id(this.value);">
<option value="">Select Campus</option>
<?php
$query ="SELECT * FROM campus";
$result = mysqli_query($con, $query);
//loop
while($campus = mysqli_fetch_assoc($result)) :
//foreach ($result as $campus){
?>
<option value="<?php echo $campus["campus_id"]; ?>"> <?php echo $campus["name"]; ?></option>
<?php
endwhile;
?>
</select>
</div>
<div class="row">
<label>Faculty:</label><br/>
<select name="faculty" id="faculty-list" class="demoInputBox" onChange="getfaculty_id(this.value);>
<option value="">Select Faculty</option>
</select>
</div>
<div class="row">
<label>Course:</label><br/>
<select name="course" id="course-list" class="demoInputBox" >
<option value="">Select Course</option>
</select>
</div>
</div>
</body>
</html>
get_faculty.php
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once("dbcontroller.php");
if(!empty($_POST["campus_id"])) {
$campus_id = $_POST["campus_id"];
$query ="SELECT * FROM faculty WHERE campus_id = $campus_id";
$result = mysqli_query($con, $query);
if ( $result === false ) {
echo mysqli_error($con);
exit;
}
echo '<option value="">Select Campus</option>';
while ( $faculty = mysqli_fetch_assoc($result) ) :
echo '<option value="' . $faculty['faculty_id'] . '">';
echo $faculty['faculty_name'];
echo '</option>';
endwhile;
}
?>
最后是 get_course.php
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once("dbcontroller.php");
if(!empty($_POST["campus_id"])) {
$course_id = $_POST["campus_id"].$POST_["faculty_id"];
$query ="SELECT * FROM `course` WHERE `campus_id`and `faculty_id` = $course_id";
$result = mysqli_query($con, $query);
if ( $result === false ) {
echo mysqli_error($con);
exit;
}
echo '<option value="">Select Campus</option>';
while ( $course = mysqli_fetch_assoc($result) ) :
echo '<option value="' . $course['course_id'] . '">';
echo $faculty['course_name'];
echo '</option>';
endwhile;
}
?>
最佳答案
您缺少关于您的结束语 onchange
第二个select
.
用这个
<select name="faculty" id="faculty-list" class="demoInputBox" onChange="getfaculty_id(this.value);">
<option value="">Select Faculty</option>
</select>
编辑
我试图复制你想做的事情并让它发挥作用。以下是经过编辑的文件,包括 mysqldump
我在此使用的数据库 gist
我编辑的文件是
index.php
包括campus_id
在发布请求中获取 course_list,以便我们可以将其用作外键function getfaculty_id(val) { $.ajax({ type: "POST", url: "get_course.php", data:{ 'faculty_id':val, 'campus_id':$('#campus-list').val() }, success: function(data){ $("#course-list").html(data); } }); }
get_course.php
更正您的访问方式$_POST
数据,你不应该这样做$POST_["faculty_id"]
正确$query
正如@sean建议的
使用$course
而不是$faculty
在 while 循环中创建select
if(!empty($_POST["campus_id"])) { $campus_id = $_POST["campus_id"]; $faculty_id=$_POST["faculty_id"]; $query ="SELECT * FROM `course` WHERE `campus_id`=$campus_id and `faculty_id` = $faculty_id"; $result = mysqli_query($con, $query); if ( $result === false ) { echo mysqli_error($con); exit; } echo '<option value="">Select Course</option>'; while ( $course = mysqli_fetch_assoc($result) ) : echo '<option value="' . $course['course_id'] . '">'; echo $course['course_name']; echo '</option>'; endwhile; }
关于php - 添加另一个下拉列表到动态 php、Mysql 表单以及另外 2 个下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37078642/