【问题标题】:Mysql select box with jquery post带有jquery post的Mysql选择框
【发布时间】:2026-01-17 16:50:01
【问题描述】:

我有一个国家/地区城市数据库,显示在选择框中,一切正常。当状态选择框选择要在div或其他元素中显示城市的状态选择框时,我想要的是什么。当为城市结果定义选择框时没有问题,但如果我使用 div 会给出错误消息

注意:未定义索引:C:\wamp\www\list\pos​​t.php 第 3 行中的国家/地区。

这是我的代码,谢谢。

post.php

include("connect.php");
$country = $_POST['country'];
$query = mysqli_query($connect, "select * from state where country_id='$country'");

while( $list = mysqli_fetch_array( $query ) ) {
    echo '<option value=' . $list["id"]. '>' . $list["state_name"] . '</option>';
}

 $state = $_POST['state'];
$query = mysqli_query($connect, "select * from city where state_id='$state'");

while( $list = mysqli_fetch_array( $query ) ) {
    echo $list["city_name"];
}

jquery 代码

$( "#countries" ).change( function(){
    $("#states").empty();
    var val = $(this).val();
    $.post("post.php", {country:val}, function(a) {
        $("#states").append(a);
        });
});

$( "#states" ).change( function(){
    $("#cities").empty();
    var val = $(this).val();
    $.post("post.php", {state:val}, function(a) {
        $("#cities").append(a);
        });
});

index.php

<?php include("connect.php"); ?>
<select id="countries">
<option>select</option>
<?php
$query = mysqli_query($connect, 'select * from country');
while( $list = mysqli_fetch_array( $query ) ) {
    echo '<option value=' . $list["id"]. '>' . $list["country_name"] . '</option>';
}
?>
</select>

<select id="states">
<option>select</option>
</select>

<div id="cities"></div>

【问题讨论】:

标签: php jquery mysql jquery-selectbox


【解决方案1】:

脚本需要检查是否使用countrystate 参数调用它,并执行相应的查询。并且返回城市的代码需要将它们放在&lt;option&gt;中,就像返回状态一样。

include("connect.php");
if (isset($_POST['country'])) {
    $country = mysqli_real_escape_string($connect, $_POST['country']);
    $query = mysqli_query($connect, "select * from state where country_id='$country'");

    while( $list = mysqli_fetch_array( $query ) ) {
        echo '<option value=' . $list["id"]. '>' . $list["state_name"] . '</option>';
    }
elseif (isset($_POST['state'])) {

    $state = mysqli_real_escape_string($connect, $_POST['state']);
    $query = mysqli_query($connect, "select * from city where state_id='$state'");

    while( $list = mysqli_fetch_array( $query ) ) {
        '<option value=' . $list["id"]. '>' . $list["city_name"] . '</option>';
    }
}

您还应该学习使用参数化查询而不是替换变量,以防止 SQL 注入。在此之前,您至少应该转义参数。

【讨论】: