php - 添加另一个下拉列表到动态 php、Mysql 表单以及另外 2 个下拉列表

标签 php jquery html mysql ajax

嗨,我正在开发一个 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

我编辑的文件是

  1. 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);
    }
    });
    }
    
  2. 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/

相关文章:

javascript - 将一张图像拖到另一张图像之上 - 就像蛋糕设计工具一样?

php - 获取字符串中的当前单词+下一个单词

Javascript/Jquery 检查 id 是否已经存在

html - 外部 CSS 文件加载顺序

javascript - 单击菜单栏中的链接后检查上一个事件链接,jQuery

javascript - JQuery 使用什么类型的缩小器?

html - VSCode:CSS中的自动完成功能是在您的HTML标记中首先创建的类。为此扩展吗?

php - 从性能的角度来看,将 MySQL 临时表用于高使用率的网站功能的效率如何?

php - Wordpress 尝试将 wp_insert_post 用于新帖子,将 wp_update_post 用于帖子更新 - 需要帖子 ID?

Javascript 动态更新 CSS