PHP填充下拉列表,onchange根据值

时间:2016-10-10 13:03:59

标签: javascript php ajax forms dropdown

嗨,所以这是我的问题,

我有一个包含类别和子类别的数据库。 我有两个下拉框(选择)。我希望它们都可以使用PHP / MYSQL填充。

我的类别已生成:

<select name="prod_cat">
    <?php
        include("php/dbconnect.php");

        $sql = "SELECT * FROM categories";
        $result = mysqli_query($conn, $sql);

        if (mysqli_num_rows($result) > 0){
            while ($row = mysqli_fetch_array($result))
            {
            echo '<option value="'. $row["cat_name"] .'">'. $row["cat_name"] .'</option>';
            }
        }
        else{echo "No categories were found!";}
        mysqli_close($conn);
    ?>
</select>

browser preview of dropdown boxes

我希望在类别更改时加载子类别。 我的SQL看起来像这样:

SELECT subcat_name FROM subcategories WHERE cat_name = '$prod_cat'

我需要从类别下拉列表中获取值并将其存储为变量。 在过去,我在javascript中做了类似的事情:

var subcat=document.forms["form"]['subcat'].value;

然后通过调用onChange()更改另一个下拉列表的值;功能如:

document.getElementById('subcat').innerHTML='<option value=""></option>';

我希望有人能指出我正确的方向!我应该研究AJAX,JavaScript还是可以用PHP完成?

谢谢。

1 个答案:

答案 0 :(得分:0)

在类别选择框中添加ID,如下所示 -

gcc

用于子类别 -

<select name="prod_cat" id="prod_cat">
    <?php
        include("php/dbconnect.php");

        $sql = "SELECT * FROM categories";
        $result = mysqli_query($conn, $sql);

        if (mysqli_num_rows($result) > 0){
            while ($row = mysqli_fetch_array($result))
            {
            echo '<option value="'. $row["cat_name"] .'">'. $row["cat_name"] .'</option>';
            }
        }
        else{echo "No categories were found!";}
        mysqli_close($conn);
    ?>
</select>

写下你的脚本 -

<select id='sub_cat' name='sub_cat'></select>

在ajax调用页面中添加代码-'www.example / fetch_subcategory.php'

<script>
$("#prod_cat").change(function(){
    //get category value
    var cat_val = $("#prod_cat").val();
    // put your ajax url here to fetch subcategory
    var url             =   'www.example/fetch_subcategory.php';
    // call subcategory ajax here 
    $.ajax({
                   type:"POST",
                   url:url,
                   data:{
                       cat_val : cat_val
                   },

                   success:function(data)
                    {
                        $("#sub_cat").html(data);
                    }
                });
});
</script>

做这样的事情,并希望它对你有用。