require?'city.php';
成都創(chuàng)新互聯(lián)主營大邑縣網(wǎng)站建設(shè)的網(wǎng)絡公司,主營網(wǎng)站建設(shè)方案,app開發(fā)定制,大邑縣h5微信小程序開發(fā)搭建,大邑縣網(wǎng)站營銷推廣歡迎大邑縣等地區(qū)企業(yè)咨詢
//?連接數(shù)據(jù)庫(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();
}
}
}
}
}
城市類太大了,發(fā)不了。
我是把省、市、地區(qū)分別存在三個數(shù)據(jù)表中(我是新手,剛自己寫的)
你理解的差不多,這種一般用不低于三個表實現(xiàn)。
城市表:城市信息
新聞表:應該有一個字段for_all_city,默認值0,可設(shè)為1,當為1的時候這個新聞需要檢查表三,保證它不會在表三中再次出現(xiàn)
新聞城市從屬關(guān)系表:新聞編號,城市編號
以上設(shè)計是因為考慮有時候新聞可能同時發(fā)布到多個城市考慮的,當根據(jù)城市選擇新聞時,應選擇城市編號對應或者新聞的for_all_city為1的新聞。
調(diào)用第三方接口。
返回信息如:城市id和自己數(shù)據(jù)庫中城市id不一樣,城市名稱可以通過address對|符號分隔成數(shù)組取[2]獲得,然后模糊查詢自己數(shù)據(jù)庫的城市id。
首先你需要去申請一個map api的授權(quán)域名key,map api逆經(jīng)緯度接口為:
關(guān)鍵詞(如廣東深圳)key=申請的APIKEYsensor=falseoutput=xmloe=utf8
請求下來的數(shù)據(jù)時kml的數(shù)據(jù)格式,怎樣解析呢?我們可以使用xml的方式來進行解析,可能參考下面的php代碼,代碼來自于wp的一個插件第一個函數(shù)是xml2array(),這個函數(shù)的作用就是把xml轉(zhuǎn)換為數(shù)組便于操作參數(shù)$url為請求的xml地址,返回的是一個xml轉(zhuǎn)換成的數(shù)組。