用mysql数据库动态构建php下拉列表

用mysql数据库动态构建php下拉列表,php,mysql,ajax,Php,Mysql,Ajax,这就是我一直试图做的: 我有一个下拉列表,我用它来选择学期 选择学期后,在下一个下拉列表中,该学期的相关课程应显示为选项 每次我改变学期的时候都应该发生 数据库结构如下: 数据库-scifac 表-课程信息 列-courseID:varchar(主键),courseName varchar,学期整数 我试图通过使用教程使用ajax来实现这一点,但它不起作用 这是我的html页面 第一年 第一年及第二年 我的php页面(ajax example.php)如下所示 $dbhost = "lo

这就是我一直试图做的:

  • 我有一个下拉列表,我用它来选择学期
  • 选择学期后,在下一个下拉列表中,该学期的相关课程应显示为选项
  • 每次我改变学期的时候都应该发生
  • 数据库结构如下:

    • 数据库-scifac
    • 表-课程信息
    • 列-courseID:varchar(主键),courseName varchar,学期整数
    我试图通过使用教程使用ajax来实现这一点,但它不起作用

    这是我的html页面

    
    第一年
    第一年及第二年
    
    我的php页面(ajax example.php)如下所示

    $dbhost = "localhost";
    $dbuser = "root";
    $dbpass = "";
    $dbname = "scifac";
    
    //Connect to MySQL Server
    mysql_connect($dbhost, $dbuser, $dbpass);
    //Select Database
    mysql_select_db($dbname) or die(mysql_error());
    // Retrieve data from Query String
    $sem = $_GET['year'];
    $sem=(int)$sem;
    
    $query = "SELECT courseID FROM course_info WHERE semester = '$sem'";
    
    
    
    //Execute query
    $qry_result = mysql_query($query) or die(mysql_error());
    
    
    // Insert a new row in the table for each person returned
    while($row = mysql_fetch_array($qry_result)){
    
    
        $display_string.="<select>";
        $display_string.="<option>$row[courseID]</option>"; 
    }
    echo "Query: " . $query . "<br />";
    $display_string .= "</select>";
    echo $display_string;
    ?>
    
    $dbhost=“localhost”;
    $dbuser=“root”;
    $dbpass=“”;
    $dbname=“scifac”;
    //连接到MySQL服务器
    mysql_connect($dbhost、$dbuser、$dbpass);
    //选择数据库
    mysql_选择_db($dbname)或die(mysql_error());
    //从查询字符串中检索数据
    $sem=$_GET['year'];
    $sem=(int)$sem;
    $query=“从课程信息中选择课程ID,其中学期=“$sem”;
    //执行查询
    $qry_result=mysql_query($query)或die(mysql_error());
    //在表中为每个返回的人员插入新行
    while($row=mysql\u fetch\u数组($qry\u result)){
    $display_字符串=“”;
    $display_string.=“$row[courseID]”;
    }
    回声“查询:”$查询“
    ”; $display_字符串=“”; echo$display_字符串; ?>

    非常感谢您在这方面给予的善意考虑。

    您可以在您的ajax-example.php中尝试:

    基本上,您需要将$_GET['sem']替换为$_GET['year']

     $dbhost = "localhost";
        $dbuser = "root";
        $dbpass = "";
        $dbname = "scifac";
    
        //Connect to MySQL Server
        mysql_connect($dbhost, $dbuser, $dbpass);
        //Select Database
        mysql_select_db($dbname) or die(mysql_error());
        // Retrieve data from Query String
        $sem = $_GET['sem'];
        //$sem=(int)$sem;
    
        $query = "SELECT courseID FROM course_info WHERE semester = '".$sem."'";
    
    
    
        //Execute query
        $qry_result = mysql_query($query) or die(mysql_error());
    
        $display_string.="<select>";
    
        // Insert a new row in the table for each person returned
        while($row = mysql_fetch_array($qry_result)){
    
    
    
            $display_string.="<option value='".$row[courseID]."'>".$row[courseID]."</option>"; 
        }
    
        $display_string .= "</select>";
    
        echo $display_string;
        ?>
    
    $dbhost=“localhost”;
    $dbuser=“root”;
    $dbpass=“”;
    $dbname=“scifac”;
    //连接到MySQL服务器
    mysql_connect($dbhost、$dbuser、$dbpass);
    //选择数据库
    mysql_选择_db($dbname)或die(mysql_error());
    //从查询字符串中检索数据
    $sem=$_GET['sem'];
    //$sem=(int)$sem;
    $query=“从课程信息中选择课程ID,其中学期=”“$sem。””;
    //执行查询
    $qry_result=mysql_query($query)或die(mysql_error());
    $display_字符串=“”;
    //在表中为每个返回的人员插入新行
    while($row=mysql\u fetch\u数组($qry\u result)){
    $display_string.=''.$row[courseID]。'';
    }
    $display_字符串=“”;
    echo$display_字符串;
    ?>
    
    为什么不从客户端提取整个数据集,并处理所有其他内容?我不太清楚你的意思。如果我不是很打扰你,请你就你的答案提供一点进一步的知识。有这么多教程,但其中一些会重复访问数据库。我的想法的关键是,它只需要访问数据库一次,收集整个数据集,然后将其编码为json。但它仍然没有给我正确的输出。实际上什么都没有发生。为什么我需要更改它,因为sem没有输入,第一个下拉列表是years,但您在javascript变量queryString=“?sem=“+sem;
     $dbhost = "localhost";
        $dbuser = "root";
        $dbpass = "";
        $dbname = "scifac";
    
        //Connect to MySQL Server
        mysql_connect($dbhost, $dbuser, $dbpass);
        //Select Database
        mysql_select_db($dbname) or die(mysql_error());
        // Retrieve data from Query String
        $sem = $_GET['sem'];
        //$sem=(int)$sem;
    
        $query = "SELECT courseID FROM course_info WHERE semester = '".$sem."'";
    
    
    
        //Execute query
        $qry_result = mysql_query($query) or die(mysql_error());
    
        $display_string.="<select>";
    
        // Insert a new row in the table for each person returned
        while($row = mysql_fetch_array($qry_result)){
    
    
    
            $display_string.="<option value='".$row[courseID]."'>".$row[courseID]."</option>"; 
        }
    
        $display_string .= "</select>";
    
        echo $display_string;
        ?>