Php 当第一个下拉菜单更改时,我无法加载第二个下拉菜单。第二个下拉列表取决于第一个下拉列表

Php 当第一个下拉菜单更改时,我无法加载第二个下拉菜单。第二个下拉列表取决于第一个下拉列表,php,jquery,mysql,Php,Jquery,Mysql,这是我的代码,显示第二个的值时出现问题: HTML:我的表单,第一个下拉列表,我通过查询从数据库中获取元素 <form name="farmer" action="index.php" method="post"> <label> <span>Chose Land:<

这是我的代码,显示第二个的值时出现问题:

HTML:我的表单,第一个下拉列表,我通过查询从数据库中获取元素

                    <form name="farmer" action="index.php" method="post">
                                    <label>
                                        <span>Chose Land:</span>
                                        <select name="land" id="land">
                                            <option value="">--land--</option>
                                                <?php 
                                                    $sql="SELECT `city` FROM `lands`";
                                                    $result =mysql_query($sql);
                                                    while ($data=mysql_fetch_assoc($result)){
                                                ?>
                                            <option value ="<?php echo $data['city'] ?>" ><?php echo $data['city'] ?></option>
                                                <?php } ?>
                                        </select>
                                    </label>

                                <label>
                                        <span>Region:</span>
                                        <select name="region" id="region">
                                            <option value="">--region--</option>
                                        </select>
                                </label>

                     <input class="button4" type="submit" name="submit" value="Submit" />
                 </form>
JS

getList.json.php文件-这里我使用queryJOIN在region和land之间建立连接

<?php

mysql_connect("localhost", "root", "") or die( "Unable to connect to database");
mysql_select_db("farmer_fields") or die( "Unable to select database");

if($_POST && $_POST['land'] != "") {

    $sql="SELECT region FROM regions
                LEFT JOIN lands
                ON regions.id_lands = lands.id";
    $rows = array();
        while ($data=mysql_fetch_assoc($sql)){
            $rows['region'] = $data;                                
        }
    echo json_encode( $rows  );
}
?>

这里不需要json。您只需使用jquery和ajax即可

jquery:

函数获取区域国家id{ 如果国家/地区id!=0{ $region\u id.htmlSelect region; $region_id.propdisabled,true; $.postajax/ajax.php{ 国家/地区id:国家/地区id },函数数据{ var data_array=data.split;; 变量编号\u of_name=data\u array.length-1; var值; var文本; var-opt; var-temp_阵列; 对于变量i=0;i 如果设置了$邮政[国家/地区id]{ $country\u id=$\u POST[country\u id]; $region\u select=mysql\u queryselect*从国家/地区id='$country\u id'所在的地区; $地区=; $region_id=; 而$region\u row=mysql\u fetch\u array$region\u select{ $region=$region.$region\u行[区域]。 ,.$region\u id.$region\u行[id]。 ;; } 回声区; } 区域选择框的HTML:

选择区域
为了安全起见,您可以将mysql\u查询更改为PDO,因为mysql\u查询已被定价。

检查此项,对我有效

JS:

PHP:


jQuery'lands'-我认为在你的JS中这是一个输入错误,应该是jQuery'land',这里是query:$sql=SELECT region FROM regions LEFT JOIN lands ON regions.id_lands=lands.id WHERE city=$_邮政['land'];你的代码充满了错误。。。在这里发布问题之前,你试过运行它吗?“lands”应该没有s,错误是我的。我试过WHERE子句,但没有效果,是的,我在发布之前已经运行了代码;我已经尝试了你的代码,但是当我在jquery上从第一个下拉列表中选择了一些内容时,仍然显示第二个下拉列表被禁用。postajax/ajax.php,{country\u id:country\u id},functiondata{…这是什么意思coutry\u id:coutry\u id这是第一个选择的id吗OK,我已经尝试了你的代码,它更清晰,你也知道我的代码,但是当我从第一个下拉列表中选择时…第二个是空的。echo…这里我想你有一个额外的after值。请参阅更新。你忘记执行了我复制了它[您是否尝试在mysql中执行查询?它是否返回任何数据?检查是否有数据来自客户端firebug、chrome dev tools、dragonfly上的服务器。或者您在WHERE子句中的post方法“getList.json.php”中使用了错误的URL,我将其更改为WHERE l.city=\.mysql\u real\u escape\u string$\u post['land'].\;而且很有效……太棒了!
<?php

mysql_connect("localhost", "root", "") or die( "Unable to connect to database");
mysql_select_db("farmer_fields") or die( "Unable to select database");

if($_POST && $_POST['land'] != "") {

    $sql="SELECT region FROM regions
                LEFT JOIN lands
                ON regions.id_lands = lands.id";
    $rows = array();
        while ($data=mysql_fetch_assoc($sql)){
            $rows['region'] = $data;                                
        }
    echo json_encode( $rows  );
}
?>
jQuery(document).ready(function() {
    var region = jQuery('#region');
    var land = jQuery('#land').change(function() {
        jQuery.post(
            'getList.json.php', {
                'land': land.val()
            },
            function(data) {
                jQuery('#region').empty();
                if (data != null) {
                    region.append(data);
                }
                else {
                    region.append('<option value="">Please select...</option>');
                }
            },
            'html'
        );
    });
 });
if($_POST && $_POST['land'] != "") {
    $sql="SELECT region
            FROM regions r
            LEFT JOIN lands l ON r.id_lands = l.id
           WHERE l.city = " . $_POST['land'];
    $result = mysql_query($sql); // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< UPD!
    while ($data = mysql_fetch_assoc($result)) {
        echo '<option value="' . $data['region'] . '">' . $data['region'] . '</option>';
    }
}