你理解的差不多,这种一般用不低于三个表实现。
10年积累的成都网站制作、成都网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有科尔沁左翼免费网站建设让你可以放心的选择与我们合作。
城市表:城市信息
新闻表:应该有一个字段for_all_city,默认值0,可设为1,当为1的时候这个新闻需要检查表三,保证它不会在表三中再次出现
新闻城市从属关系表:新闻编号,城市编号
以上设计是因为考虑有时候新闻可能同时发布到多个城市考虑的,当根据城市选择新闻时,应选择城市编号对应或者新闻的for_all_city为1的新闻。
调用第三方接口。
返回信息如:城市id和自己数据库中城市id不一样,城市名称可以通过address对|符号分隔成数组取[2]获得,然后模糊查询自己数据库的城市id。
首先你需要去申请一个map api的授权域名key,map api逆经纬度接口为:
关键词(如广东深圳)key=申请的APIKEYsensor=falseoutput=xmloe=utf8
请求下来的数据时kml的数据格式,怎样解析呢?我们可以使用xml的方式来进行解析,可能参考下面的php代码,代码来自于wp的一个插件第一个函数是xml2array(),这个函数的作用就是把xml转换为数组便于操作参数$url为请求的xml地址,返回的是一个xml转换成的数组。
require 'city.php';
// 连接数据库(PDO)
$pdo=new PDO('mysql:host=localhost;dbname=city','root','root');
$pdo-exec('set names utf8');
$pdo-setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
// 实例化城市类
$c=new city();
$result=$c-mycity();
$city_id = 0;
foreach ($result as $k=$value) {
if(count($value) == count($value,1)){
$sql="insert into city_province (province) value ('{$value['province_name']}')";
$smt=$pdo-prepare($sql);
$smt-execute();
}else{
$sql11="insert into city_province (province) value ('{$value['province_name']}')";
$smt11=$pdo-prepare($sql11);
$smt11-execute();
foreach ($value['city'] as $v=$value1) {
$sql2="insert into city_name (name,province_id) values ('{$value1['city_name']}','{$k}')";
$smt2=$pdo-prepare($sql2);
$smt2-execute();
$city_id += 1;
echo $city_id.'br';
if(!empty($value1['area'])){
foreach ($value1['area'] as $valu1e2) {
$sql3="insert into city_area (area,city_id) values ('{$valu1e2}','{$city_id}')";
$smt3=$pdo-prepare($sql3);
$smt3-execute();
}
}
}
}
}
城市类太大了,发不了。
我是把省、市、地区分别存在三个数据表中(我是新手,刚自己写的)