Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要帮助修复PHP Ajax Jquery Sql动态下拉列表吗_Php_Jquery_Mysql_Sql_Ajax - Fatal编程技术网

需要帮助修复PHP Ajax Jquery Sql动态下拉列表吗

需要帮助修复PHP Ajax Jquery Sql动态下拉列表吗,php,jquery,mysql,sql,ajax,Php,Jquery,Mysql,Sql,Ajax,你好 我有下面的动态下拉列表。在这里,若你们从第一个列表中选择国家,相关的州将从第二个列表的数据库中被调出 我需要做的是:现在,根据与第一个下拉列表关联的ID填充第二个下拉列表。我需要它依赖于第一个下拉列表的值 如果有人能帮我,我将不胜感激 我是新来的。我也希望得到任何建议 非常感谢。 阿什克 SQL表结构:column1=id,column2=country\u name,column3=state\u name,column4=city\u name 以下是SQL代码: 以下是使用Ajax

你好

我有下面的动态下拉列表。在这里,若你们从第一个列表中选择国家,相关的州将从第二个列表的数据库中被调出

我需要做的是:现在,根据与第一个下拉列表关联的ID填充第二个下拉列表。我需要它依赖于第一个下拉列表的值

如果有人能帮我,我将不胜感激

我是新来的。我也希望得到任何建议

非常感谢。 阿什克

SQL表结构:column1=id,column2=country\u name,column3=state\u name,column4=city\u name

以下是SQL代码:

以下是使用Ajax的HTML数据:

PHP代码保存在下面给出的ajax.PHP文件中:


你的问题全错了。对于国家,如果同一个国家有不同的城市,您将多次列出该国家。对于州和市,您只需返回一个与所选国家或州具有相同ID的城市,您必须获取所有城市

private function process_data(){
    $this->_index = ($_REQUEST['index'])?$_REQUEST['index']:NULL;
    $id = ($_REQUEST['id'])? (int)$_REQUEST['id']:NULL;
    switch($this->_index){
        case 'country':
            $this->_query = "SELECT id,country_name 
                             FROM globe 
                             GROUP BY country_name";
            $this->_fields = array('id','country_name');
            break;
        case 'state':
            $this->_query = "SELECT g1.id, g1.state_name 
                             FROM globe AS g1
                             JOIN globe AS g2 USING (country_name)
                             WHERE g2.id = $id
                             GROUP BY g1.state_name";
            $this->_fields = array('id','state_name');
            break;
        case 'city':
            $this->_query = "SELECT g1.id, g1.city_name
                             FROM globe AS g1
                             JOIN globe AS g2 USING (country_name, state_name)
                             WHERE g2.id = $id";
            $this->_fields = array('id','city_name');
            break;
        default:
            break;
    }
    $this->show_result();
}

到目前为止你的努力如何?非常感谢你开发的脚本。这帮了大忙。它工作得很好。
    <html xmlns="http://www.w3.org/1999/xhtml"><head profile="http://gmpg.org/xfn/11">
<head>
<title>Country State City Dependent Dropdown using Ajax</title>
<script type="text/javascript" src="jquery-1.9.1.js"></script>

<script type="text/javascript">
$(document).ready(function(){
    load_options('','country');
});

function load_options(id,index){
    $("#loading").show();
    if(index=="state"){
        $("#city").html('<option value="">Select city</option>');
    }
    $.ajax({
        url: "ajax.php?index="+index+"&id="+id,
        complete: function(){$("#loading").hide();},
        success: function(data) {
            $("#"+index).html(data);
        }
    })
}
</script>
</head>
<body>
<div style="width:800px; margin:auto;padding-top:100px;">
<h1>Country,State,City dynamic dependent dropdown</h1>
<form>
        <label>Select Country</label>
        <select id="country" name="country"onChange="load_options(this.value,'state');">
            <option value="">Select country</option>
        </select>
        &nbsp;&nbsp;&nbsp;
        <label>Select State</label>
        <select id="state" name="state" onChange="load_options(this.value,'city');">
            <option value="">Select state</option>
        </select>
        &nbsp;&nbsp;&nbsp;
        <label>Select city</label>
        <select id="city" name="city">
            <option value="">Select City</option>
        </select>
        <img src="loader.gif" id="loading" align="absmiddle" style="display:none;"/>
</form>
</div>
</body>
</html>
<?php

class AJAX {

    private $database = NULL;
    private $_query = NULL;
    private $_fields = array();
    public  $_index = NULL;
    const DB_HOST = "localhost";
    const DB_USER = "root";
    const DB_PASSWORD = "";
    const DB_NAME = "2";


    public function __construct(){
        $this->db_connect();                    // Initiate Database connection
        $this->process_data();
    }

    /*
     *  Connect to database
    */
    private function db_connect(){
        $this->database = mysql_connect(self::DB_HOST,self::DB_USER,self::DB_PASSWORD);
        if($this->database){
            $db =  mysql_select_db(self::DB_NAME,$this->database);
        } else {
            echo mysql_error();die;
        }
    }



    private function process_data(){
        $this->_index = ($_REQUEST['index'])?$_REQUEST['index']:NULL;
        $id = ($_REQUEST['id'])?$_REQUEST['id']:NULL;
        switch($this->_index){
            case 'country':
                $this->_query = "SELECT id,country_name FROM globe";
                $this->_fields = array('id','country_name');
                break;
            case 'state':
                $this->_query = "SELECT id,state_name FROM globe WHERE id=$id";
                $this->_fields = array('id','state_name');
                break;
            case 'city':
                $this->_query = "SELECT id,city_name FROM globe WHERE id=$id";
                $this->_fields = array('id','city_name');
                break;
            default:
                break;
        }
        $this->show_result();
    }

    public function show_result(){
        echo '<option value="">Select '.$this->_index.'</option>';
        $query = mysql_query($this->_query);
        while($result = mysql_fetch_array($query)){
            $entity_id = $result[$this->_fields[0]];
            $enity_name = $result[$this->_fields[1]];
            echo "<option value='$entity_id'>$enity_name</option>";
        }
    }
}

$obj = new AJAX;

    ?>
private function process_data(){
    $this->_index = ($_REQUEST['index'])?$_REQUEST['index']:NULL;
    $id = ($_REQUEST['id'])? (int)$_REQUEST['id']:NULL;
    switch($this->_index){
        case 'country':
            $this->_query = "SELECT id,country_name 
                             FROM globe 
                             GROUP BY country_name";
            $this->_fields = array('id','country_name');
            break;
        case 'state':
            $this->_query = "SELECT g1.id, g1.state_name 
                             FROM globe AS g1
                             JOIN globe AS g2 USING (country_name)
                             WHERE g2.id = $id
                             GROUP BY g1.state_name";
            $this->_fields = array('id','state_name');
            break;
        case 'city':
            $this->_query = "SELECT g1.id, g1.city_name
                             FROM globe AS g1
                             JOIN globe AS g2 USING (country_name, state_name)
                             WHERE g2.id = $id";
            $this->_fields = array('id','city_name');
            break;
        default:
            break;
    }
    $this->show_result();
}