php - 使用 PHP 的下拉列表中的第二个下拉列表

标签 php mysql database select drop-down-menu

我正在创建一个下拉列表,该列表使用选项名称(不同的汽车)。我想添加第二个下拉列表,它使用第一个下拉列表中的 ID 创建每辆车不同型号的下拉列表。

如果可能的话,我想只使用 PHP,我相信是的。这是我的第一个下拉代码。

function get_vehicle() {
    global $db;
    $query = $db->prepare("SELECT idmanufacturer, name FROM manufacturer");
    $query->execute();
    $vehicles = $query->fetchAll();

    if(isset($vehicles)) {
        echo "<label>Vehicle:</label>";
        echo "<select name='vehicle'>";
    foreach ($vehicles as $vehicle){
            echo '<option value="'.$vehicle['name'].'">'.$vehicle['name'].'</option>';
            }echo "</select>";
        echo "<br />";
    }
 }

最佳答案

为此,您需要创建一个 ajax 函数。在更改第一个下拉菜单时,将其值传递给对任何其他页面的 ajax 请求,并通过其 id 查找所有车型并将其显示在第二个下拉菜单中。 这是一个例子:- //文件名First.php

function get_vehicle() {

    global $db;

    $query = $db->prepare("SELECT idmanufacturer, name FROM manufacturer");

    $query->execute();
    $vehicles = $query->fetchAll();
    if(isset($vehicles)) {
        echo "<label>Vehicle:</label>";
        echo "<select name='vehicle' onselect="call_models(this)">";
    foreach ($vehicles as $vehicle){
            echo '<option value="'.$vehicle['id'].'">'.$vehicle['name'].'</option>';
            }echo "</select>";
        echo "<br />";
    }
 }

//这将打印第一个选择框

 get_vehicle() ; 

/* 这是第二个下拉菜单,默认情况下它将被禁用

<select name="cardmodels" id="models" disabled>
<option></option>
</select>

/************* 添加ajax功能************/

<script type="text/javascript">

/***********  This function will get the value of first dropdown and will pass the value to the second.php where we will create function to retrieve all models of selected class after fetching this we will return all options of second class. After fetching this we will assign to the second dropdown.

***************/

    function call_models(cnt)
    {
    var model= $(cnt).val();    
    if(models)  {
    $.ajax({
    type: "POST",
    url: "Second.php",
    data: {model:model_car}
    })
    .done(function(responce) {
    if(responce!="Not_found") {
    $('#models').removeAttr( "disabled" );
    $('#models').html(responce);
    }
    });
    }
    }

</script>

/************** 第二个.php *********/ //文件名First.php

    function get_models($id) {

        global $db;

        $query = $db->prepare("SELECT model_name FROM car_models where car_id ='".$id."' ");

        $query->execute();
        $models= $query->fetchAll();

        if($models) {

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


if($_POST) {


get_models($_POST['model']);


} else {


echo "Not_found";

}

?>

关于php - 使用 PHP 的下拉列表中的第二个下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28870864/

相关文章:

c# - Azure:使用 PHP 作为 WebRole 并使用 C# 作为 WorkRole?如何打包服务包?

php - 我在 Laravel 上收到 'General error: 1364',说我没有用户名的默认值,有人可以帮我吗?

php - 比没有唯一标识符的 DOM 更好的方法?

php - 根据 laravel 中当前的应用程序区域设置在适当的 Mysql 字段中搜索

php - Mysql 创建数据库失败(有点)

php - 与 Mysql 和 PHP 的多对多关系

javascript - 使用 php Onload javascript 不会触发 onload 函数

php - 接受/拒绝/完成 - 数据库中记录的状态(标志)

java - 如果不存在新的 Java DB,如何创建?

database - MySQL 查询未从 2 个连接表中正确选择