我有一个简单的解决方案来根据国家/地区 php/javascript/Mysql 选择州
MySQL 表
country
country_code varhar(5),
country_name varchar(100)
state
country_code varhar(5),
state_code varchar(5),
country_name varchar(100)
主 php 文件中的国家/州选择
main.php
<html>
<body>
Country
<?php
$sql="SELECT * FROM country order by country_name";
$rs=$conn->Execute($sql);
echo '<select value="'.$country_code.'" name="country_code" id="country_list" onChange="stateList(this.value);" />';
echo '<option value="">--Select--</option>';
$rs->MoveFirst();
while (!$rs->EOF) {
echo '<option value="'.$rs->fields['country_code'].'"';
if ($rs->fields['country_code'] == $country_code) {echo " selected";}
echo '>'.$rs->fields['country_name'].'</option>';
$rs->MoveNext();
}
echo '</select>';
?>
State
<?php
$sql="SELECT * FROM state where contry_code = '$country_code' order by state_name";
$rs=$conn->Execute($sql);
echo '<select value="'.$state_code.'" name="state_code" id="state_list" />';
echo '<option value="">--Select--</option>';
$rs->MoveFirst();
while (!$rs->EOF) {
echo '<option value="'.$rs->fields['state_code'].'"';
if ($rs->fields['state_code'] == $state_code) {echo " selected";}
echo '>'.$rs->fields['state_name'].'</option>';
$rs->MoveNext();
}
echo '</select>';
?>
</body>
</html>
Java 脚本
<script type="text/javascript">
function stateList(val) {
var select = document.getElementById( "state_list" );
var url = "ge_statelist.php?country_code="+val;
$.post( url, function( data ) {
$("#state_list").empty();
var data1 = data.split("|");
for (var x = 0; x < data1.length; x++) {
var data2 = data1[x].split("=");
$('#state_list').append('<option value="'+data2[0]+'"> '+data2[1]+' </option>')
}
})
</script>
get_stataelist.php
** In this, the result is echoing country code=name pair seperated by '|' character
** Eg. Echoing string KL=Kerala|TN=Tamil Nadu ...... for the country IN - India
<?php
session_start();
require_once 'functions.php';
$country_code = $_GET['country_code'];
$conn = connect_db() //Make you own connection entry conn with Server,DB User ID, DB Password and DB Name
if ($country_code != "") {
$sql="SELECT * FROM state where coutry_code = '$country_code' order by country_name";
$rs=$conn->Execute($sql);
echo '=--Select--';
$rs->MoveFirst();
while (!$rs->EOF) {
echo "|".$rs->fields['state_code']."=".$rs->fields['state_name'];
$rs->MoveNext();
}}
else {
echo "=--Not found--";
}
?>