城市切换 实现 php
城市切换功能的实现(PHP)
数据库设计
创建城市数据表,包含字段如id、name、code等。示例SQL:
CREATE TABLE cities (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
code VARCHAR(10) NOT NULL
);
前端界面
使用HTML表单或下拉菜单让用户选择城市:
<select name="city" id="city-select">
<option value="1">北京</option>
<option value="2">上海</option>
</select>
后端处理
通过PHP接收并处理城市选择请求:
session_start();
if(isset($_POST['city'])) {
$_SESSION['current_city'] = $_POST['city'];
}
数据持久化
将用户选择存储到Session或Cookie中:

// 存储到Cookie(30天有效期)
setcookie('user_city', $_POST['city'], time()+60*60*24*30, '/');
动态内容加载
根据当前城市从数据库查询数据:
$currentCity = $_SESSION['current_city'] ?? 'default_city';
$query = "SELECT * FROM products WHERE city_id = '$currentCity'";
AJAX实现无刷新切换
使用jQuery实现异步城市切换:
$('#city-select').change(function(){
$.post('change_city.php', {city: $(this).val()}, function(){
location.reload();
});
});
性能优化
对城市数据进行缓存:

$cities = apc_fetch('cities_cache');
if(!$cities) {
$cities = $db->query("SELECT * FROM cities")->fetchAll();
apc_store('cities_cache', $cities, 3600);
}
安全考虑
对用户输入进行过滤和验证:
$cityId = filter_input(INPUT_POST, 'city', FILTER_VALIDATE_INT);
if($cityId === false) {
die('Invalid city selection');
}
多语言支持
为不同城市准备不同的语言包:
$lang = getCityLanguage($_SESSION['current_city']);
include "lang/$lang.php";
移动端适配
添加响应式设计,确保城市选择器在移动设备上可用:
@media (max-width: 768px) {
#city-select {
width: 100%;
}
}






