首页 > 解决方案 > 使用 php 和 javascript 处理动态下拉框

问题描述

我正在尝试创建一个动态下拉框,一旦做出选择就可以访问 MySQL。第二个框取决于第一个框的选择。我对javascript不太熟悉,但我遇到了一些似乎是我正在寻找但没有执行的代码,我不知道为什么。代码的第一部分是带有 javascript 的选项字段,第二部分是 dynamicdd.php。任何帮助都会很棒。谢谢你。

<tr>
    <td>Country:  </td>
    <td>
        <select name="Countrybox" onchange="getlocation(this.value)">
            <option value="none"> Please Select </option>

            <?php
              $qry2 = "Select Country from Locations";
              $populate = mysqli_query($conn, $qry2);

              while ($run = mysqli_fetch_assoc($populate)){
                echo "<option value='".$run['Country']."'>".$run['Country']."</option>";
              }
            ?>
        </select>
    </td>
</tr>


<tr>
    <td>Location:</td>
    <td>
        <select name="Locationbox" id="locationbycountry">
            <option> Select Above First </option>
        </select>
    </td>
</tr>

<script type="text/javascript">
function getlocation(locationarea) {
    var xhttp = new XMLHttpRequest();
    var url = "dynamicdd.php";
    var data = new FormData();
    data.append('SearchValue', locationarea);
    xhttp.open('POST', url, true);
    xhttp.send(data);
    xhttp.onreadystatechange = function() {
        if (xhttp.readyState == 4 && xhttp.status == 200) {
            document.getElementById("locationbycountry").innerHTML = xhttp.responseText;
        }
    }
}
</script>

动态dd.php

<?php

if($_POST['SearchValue']){
  $host = "localhost";
  $username = "root";
  $password = "";
  $db = "Work";

  $conn = mysqli_connect($host, $username ,$password, $db);

  $choice = $_POST['SearchValue'];

  $sql = "SELECT * FROM locations WHERE Country = '$choice'";

  $result = mysqli_query($conn, $sql) or die(mysqli_error($conn));

  while ($row = mysqli_fetch_assoc($result)){
    echo "<option value='".$row['Location']."'>".$row['Location']."</option>";
  }

}


 ?>

标签: javascriptphp

解决方案


您的 HTML 格式足够好,但您的 PHP 脚本中有错误。试试下面的代码来纠正一些简单的错别字:

<?php
if($_POST['SearchValue']){
  $host = "localhost";
  $username = "root";
  $password = "";
  $db = "";

  $conn = mysqli_connect($host, $username ,$password, $db);

  $choice = $_POST['SearchValue'];

  $sql = "SELECT * FROM Locations WHERE country = '$choice'";

  $result = mysqli_query($conn, $sql) or die('error');

    while ($row = mysqli_fetch_assoc($result)){
      echo "<option value='".$row['location']."'> ".$row['location']." </option>";

    }
}
?>

此外,请务必进一步了解 Select2,它是标准选择框的一个非常受支持的替代品。https://select2.org/


推荐阅读