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

时间:2019-06-19 18:06:32

标签: php mysql sql drop-down-menu

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

我目前正在对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'");

我没有包括转换信息,因为我可以看到它。

第一个选择列表称为“班级”,其中列出学生一年中的时间。

“第二个列表”学生应列出数据库中先前选择的时期内已注册的那些学生。

对于信息:我目前在第二个下拉列表中返回的结果是一个没有在数据库中为其分配时间段(夏季等)的学生“学生”!

在此先感谢您的帮助...

2 个答案:

答案 0 :(得分:1)

它称为级联下拉列表。

基本上,您将希望在第一个下拉列表的 onChange 事件上触发AJAX调用,并从API响应中填充第二个下拉列表。

答案 1 :(得分:0)

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

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>";
}