Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从选择列表中选择选项,然后根据数据库记录更改第二个选择列表?_Php_Mysql_Sql_Drop Down Menu - Fatal编程技术网

Php 如何从选择列表中选择选项,然后根据数据库记录更改第二个选择列表?

Php 如何从选择列表中选择选项,然后根据数据库记录更改第二个选择列表?,php,mysql,sql,drop-down-menu,Php,Mysql,Sql,Drop Down Menu,我有一个带有几个选择下拉列表的表单。应选择第一个选项(夏季、春季或冬季),然后第二个下拉列表将显示在此期间上课的学生 我目前在对PHP的sql请求中使用了一个PHP变量(包含第一个选择)——这可能是我的问题,但我看不到一个适合我一生的解决方案 我对所有的想法都持开放态度。我已经研究了StackOverflow上的一些类似问题,但似乎没有一个适合我的问题 <div class="form-group col-md-12"> <select name="classe" id

我有一个带有几个选择下拉列表的表单。应选择第一个选项(夏季、春季或冬季),然后第二个下拉列表将显示在此期间上课的学生

我目前在对PHP的sql请求中使用了一个PHP变量(包含第一个选择)——这可能是我的问题,但我看不到一个适合我一生的解决方案

我对所有的想法都持开放态度。我已经研究了StackOverflow上的一些类似问题,但似乎没有一个适合我的问题

<div class="form-group col-md-12">
    <select name="classe" id="classe" class="form-control">
        <option value="">Sélectionnez la classe</option>
        <?php
        while ($rows = $result->fetch_assoc()) {
            $classe = $rows['classe'];
            echo "<option value='$classe'>$classe</option>";
        }
        ?>
    </select>
</div>
<div class="form-group col-md-12">
    <select name="etudiant" id="etudiant" class="form-control">
        <option value="">Sélectionnez l'étudiant'</option>
        <?php
        while ($rows3 = $result3->fetch_assoc()) {
            $etudiant = $rows3['name'];
            echo "<option value='" . $rows3['id'] . "'>$etudiant</option>";
        }
        ?>
    </select>
</div>


$classe = filter_input(INPUT_POST, "classe");
$askEtudiant = new mysqli('localhost', 'root', '', 'attendance');
$result3 = $askEtudiant->query("SELECT id, name FROM users WHERE role = 'etudiant' AND classe = '$classe'");

塞朗尼兹高级酒店

它被称为级联下拉列表

基本上,您需要对第一个下拉列表的onChange事件触发AJAX调用,并从API响应填充第二个下拉列表。

解决方案 HTML文件中的脚本
函数showUser(str){ 如果(str==“”){ document.getElementById(“etudiant”).innerHTML=“”; 返回; } if(window.XMLHttpRequest){ //IE7+、Firefox、Chrome、Opera、Safari的代码 xmlhttp=新的XMLHttpRequest(); }else{//IE6、IE5的代码 xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”); } xmlhttp.onreadystatechange=函数(){ if(this.readyState==4&&this.status==200){ document.getElementById(“etudiant”).innerHTML=this.responseText; } } open(“GET”、“getUsers.php?q=“+str,true”); xmlhttp.send(); }

分离文件

如果不想在不提交表单和重新加载页面的情况下执行此操作,则需要使用JavaScript和AJAX.Hi@Barmar。是的,我希望第二个下拉列表在选择第一个选项后立即准备好。因此,不提交表格。你知道从哪里开始吗?搜索词
SEPERATE FILE 
<?php
require_once("connection.php");
$id =  $_GET["q"];

$result3 = "SELECT id, name FROM users WHERE classe = :classe";
$stmt = $conn->prepare($result3);
$stmt->bindParam(":classe", $_GET['q']);
$stmt->execute();
$users = $stmt->fetchAll();
echo "<option value=\"\">Sélectionnez l'étudiant'</option>";

foreach ($users as $key => $value) {
echo "<option value='" . $value['id'] . "'>" . $value['name'] . "</option>";
}