php - 显示级联下拉列表

标签 php jquery mysql sql mysqli

索引.php

<div id="container">
  <div id="body">
    <div id="dropdowns">
       <div id="center" class="cascade">
          <?php
        $sql = "SELECT searchname FROM search_parent";
        $query = mysqli_query($con, $sql);
        ?>
            <label>First Option:
            <select name="searchname" id = "drop1">
              <option value="">Please Select</option>
              <?php while ($rs = mysqli_fetch_array($query, MYSQLI_ASSOC )) { ?>
              <option value="<?php echo $rs["id"]; ?>"><?php echo $rs["searchname"]; ?></option>
              <?php } ?>
            </select>
            </label>
          </div>

        <div class="cascade" id="state"></div> 

          <div id="city" class="cascade"></div> 
        </div>
    </div>
  </div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("select#drop1").change(function(){

    var country_id =  $("select#drop1 option:selected").attr('value'); 
// alert(country_id);   
    $("#state").html( "" );
    $("#city").html( "" );
    if (country_id.length > 0 ) { 

     $.ajax({
            type: "POST",
            url: "fetch_state.php",
            data: "country_id="+country_id,
            cache: false,
            beforeSend: function () { 
                $('#state').html('<img src="loader.gif" alt="" width="24" height="24">');
            },
            success: function(html) {    
                $("#state").html( html );
            }
        });
    } 
});
});
</script>

fetch_state.php
<?php

include("connection.php");
$country_id = trim(mysqli_escape_string($con,$_POST["country_id"]));

$sql = "SELECT * FROM t1 WHERE parent_id = '".$country_id ."' ";
$count = mysqli_num_rows( mysqli_query($con, $sql) );
if ($count > 0 ) {
$query = mysqli_query($con, $sql);
?>
<label>Select: 
<select name="state" id="drop2">
    <option value="">Please Select</option>
    <?php while ($rs = mysqli_fetch_array($query, MYSQLI_ASSOC)) { ?>
    <option value="<?php echo $rs["id"]; ?>"><?php echo $rs["title"]; ?></option>
    <?php } ?>
</select>
</label>
<?php 
    }

?>

<script src="jquery-1.9.0.min.js"></script>

search_parent 表
id  searchname
1     t1
2     t2
3     t3

当用户选择 t1 时,第二个下拉列表上的值应从 t1 表中填充,如果选择 t2,则应从 t2 表中填充,如果选择 t3,则应从 t3 表中填充第二个下拉列表

t1 表
id   title   parent_id
1    tt1      1

但是,当我运行此代码时,它不起作用,它只显示第一个下拉列表,当我选择一个值时,什么也没有进一步显示

最佳答案

我认为您的问题是,您缺少 id field 。

因此,在您的第一个查询中,您说:

SELECT searchname FROM search_parent

正如您所描述的,它可能是 t1 , t2 , t3 .
但是您没有选择id查询中的字段,但您尝试将其添加为选项值:
<option value="<?php echo $rs["id"]; ?>"><?php echo $rs["searchname"]; ?></option>
                       here^^^^^^^^^

所以没有任何值(value)。

您需要将查询更改为
SELECT id,searchname FROM search_parent

关于php - 显示级联下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27266858/

相关文章:

php - 实现在线订单跟踪数据库的最简单方法

php - 如何在 yii2 的 radioList() 中添加不同和公共(public)的类

javascript - DIV 标签和 HTML5 元素(章节、文章)之间应该使用什么和有什么不同?

mysql - 基于内部查询计数的排序结果

php - 安装多个 Apache 后 Xampp 中的 Apache 出现问题

php - Doctrine multiple where 条件

javascript - 滚动元素以水平查看

javascript - 登录未执行

php - 使用 ajax/jquery 检索最后一个 mysql rowd ID

MySQL:如何根据多行的数值差异对SQL查询结果进行排序?