需要帮助修复PHP Ajax Jquery Sql动态下拉列表吗
你好 我有下面的动态下拉列表。在这里,若你们从第一个列表中选择国家,相关的州将从第二个列表的数据库中被调出 我需要做的是:现在,根据与第一个下拉列表关联的ID填充第二个下拉列表。我需要它依赖于第一个下拉列表的值 如果有人能帮我,我将不胜感激 我是新来的。我也希望得到任何建议 非常感谢。 阿什克 SQL表结构:column1=id,column2=country\u name,column3=state\u name,column4=city\u name 以下是SQL代码: 以下是使用Ajax的HTML数据: PHP代码保存在下面给出的ajax.PHP文件中:需要帮助修复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的城市,您必须获取所有城市
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>
<label>Select State</label>
<select id="state" name="state" onChange="load_options(this.value,'city');">
<option value="">Select state</option>
</select>
<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();
}