城市选择器3级联动源码分享及使用方法

1、HTML中调用JS显示3级联动的下拉选项。
https://github.com/webjust/case-study
3_level_city

Select Code
1
2
3
省:<select id="province"></select>
市:<select id="city"></select>
区:<select id="area"></select>

2、JSON格式的城市数据,转换成普通变量array格式,批量导入到数据库。
2016-08-22_211617

city_array

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// $data是存储的JSON格式,转换成数组时,第2个参数必须填写,默认转换成数组对象。
$arr = json_decode($data, true);

$arr2 = array();
// 转换索引
foreach ($arr as $key => $value) {
	$arr2[$key]['data_id'] = $value['id'];
	$arr2[$key]['code'] = $value['code'];
	$arr2[$key]['name'] = $value['name'];
	$arr2[$key]['pid'] = $value['pid'];
}

// 实例化模型对象,批量导入数据到MySQl
D("City")->addAll($arr2);

3、存储到数据库中的地址是value值。(如图所示)
shop_city2

shop_city
4、写函数将地址转换成中文格式。

在送货地址表shop_address中,address_id和customer_id关联,查找当前默认地址。
ER_Cart

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// 根据address_id查找详细的地址
public function findDefaultAddress($address_id)
{
	try{
		$ret = M('address')->where('address_id='.$address_id)->find();
		$address = $this->findCity($ret['province'], $ret['city'], $ret['area']).$ret['address'];
		return $address;
	}catch(Exception $e){
		return $e->getMessage();
	}
}

// 根据value值查找城市
private function findCity($value1, $value2, $value3)
{
	if ($value1 == 0 || $value2 == 0 || $value3 == 0) {
		return '****城市信息缺失****';
	}
	try{
		$address = M("city");
		return $address->where("data_id=".$value1)->getField('name').$address->where("data_id=".$value2)->getField('name').$address->where("data_id=".$value3)->getField('name');
	} catch(Exception $e)
	{
		return $e->getMessage();
	}
	
}