首页 > 解决方案 > 如何根据在 php 和 javascript/jquery 中从数据库中选择另一个下拉列表来填充一个下拉列表

问题描述

我想根据其他的选择来填充下拉列表。这是数据库的样子。尝试了以下代码,但它没有给我任何结果。

make
id maker
2   Apple
3   Samsung


model
id make_id model
1    3      Galaxy S III
2    3      Galaxy S IV
3    2        iphone 5s
4    2        iphone 5

查询.php

class Queries{
    public static function getMaker() {
       $conn = DB::databaseConnection();
    $sql = "SELECT * from make"  ;
    $stmt = $conn->prepare($sql);
    if ($stmt->execute()) {
         $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
        return $result;
    } else {
        return null;
    }
    }
    public static function getModel($make_id) {
    $conn = DB::databaseConnection();
    $sql = "SELECT * from model WHERE make_id = :make_id"  ;     
    $stmt = $conn->prepare($sql);
    $stmt->bindParam(':make_id', $make_id);
    if ($stmt->execute()) {
         $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
        return $result;
    } else {
        return null;
    }
    }
}

mobilereg.php

$make_id = filter_input(INPUT_GET, "make_id");
 require_once './pages/header.php';
  require_once './functions/queries.php';
  $maker = Queries::getMaker();
   $model = Queries::getModel($make_id);

 <div class="control-group form-group">
          <div class="controls">
            <label>Make</label>
<select class="form-control"name="maker"id="maker"onchange="get_models();">
        <option selected disabled></option>
        <?php
        for ($i = 0; $i < count($maker); $i++) {
            echo '<option value="' . $maker[$i]['id'] . '">' . $maker[$i]['maker'] .  '</option>';
        }
        ?>
            </select>

          </div>
        </div>
        <div class="control-group form-group">
          <div class="controls">
            <label>Model</label>
            <select class="form-control" name="get_models" id="get_models">
        <option selected disabled></option>

            </select>
          </div>
        </div>

main.js

function get_models(){
    var maker = $('#maker').val();
    var dataString = "maker="+maker;
    $.ajax({
    type: "POST",
    url: "functions.php", 
    data: dataString,
    success: function(html)
    {
        $("#get_models").html(html);
    }
});
}

函数.php

require_once './queries.php';

$make_id = filter_input(INPUT_POST, "make_id");

if($_POST){
    $maker = $_POST['maker'];
    if($maker!=''){
    echo Queries::getModel($make_id);
    echo "<select name='get_models'>";

   echo "<option value='" . $row['make_id'] . "'>" . $row['model'] . " 
 </option>";
       echo '</select>';
    }
}

所以制造商和型号是两个下拉菜单。模型中的选项应基于我们在制造商下拉菜单中所做的选择。

我已经从这里的一个问题中引用了代码,但它根本不起作用。我猜问题出在functions.php中。我对 php 和 js 很陌生,任何帮助将不胜感激。TIA

标签: javascriptphpjquerydrop-down-menu

解决方案


推荐阅读