大陸省市區三級聯動資料庫 – 詳細地址選擇

一、概述

大陸省市區三級聯動資料庫是一個存儲了中國大陸所有省市區數據以及詳細地址信息的資料庫。

詳細地址選擇是指在表單中選擇地址時,能夠通過省市區三級聯動方式展現出所有可選地址選項,同時在最後一個選項中提供輸入框,用於輸入詳細地址。

可以通過使用該資料庫和詳細地址選擇組件,快速便捷地完成地址選擇功能的開發。

二、資料庫設計

資料庫中包含了三張表:省表、市表和區表。每張表中都有一個id和一個name欄位。其中,市表和區表都有一個pid欄位,作為父級省市的id。

CREATE TABLE `province` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `city` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `pid` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `area` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `pid` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

三、數據填充

可以通過爬取國家統計局的數據,或者直接使用開源數據,來填充省市區數據。

以使用開源數據為例,以下是導入數據的代碼示例:

LOAD DATA LOCAL INFILE '/path/to/province.csv' INTO TABLE province CHARACTER SET utf8mb4 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';
LOAD DATA LOCAL INFILE '/path/to/city.csv' INTO TABLE city CHARACTER SET utf8mb4 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';
LOAD DATA LOCAL INFILE '/path/to/area.csv' INTO TABLE area CHARACTER SET utf8mb4 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';

其中,/path/to/province.csv、/path/to/city.csv和/path/to/area.csv分別是包含省市區數據的CSV文件路徑。

四、詳細地址選擇組件

詳細地址選擇組件是一個基於省市區三級聯動選擇器的表單組件,其中最後一個選項為詳細地址輸入框。

以下是詳細地址選擇組件的代碼示例:

<div class="address-selector">
  <select name="province">
    <option value="">省份</option>
    <?php foreach ($provinceList as $province): ?>
      <option value="<?php echo $province['id']; ?>"><?php echo $province['name']; ?></option>
    <?php endforeach; ?>
  </select>
  <select name="city"></select>
  <select name="area"></select>
  <input type="text" name="detail" placeholder="詳細地址"/>
</div>

<script>
$(function() {
  // 省市區聯動選擇器
  $('select[name="province"]').change(function() {
    var pid = $(this).val();
    if (pid == '') {
      $('select[name="city"]').html('<option value="">城市</option>');
      $('select[name="area"]').html('<option value="">區縣</option>');
      return;
    }
    
    $.get('/api/city', {pid: pid}, function(data) {
      var options = '<option value="">城市</option>';
      for (var i = 0; i < data.length; i++) {
        options += '<option value="' + data[i].id + '">' + data[i].name + '</option>';
      }
      $('select[name="city"]').html(options);
      $('select[name="area"]').html('<option value="">區縣</option>');
    });
  });
  
  $('select[name="city"]').change(function() {
    var pid = $(this).val();
    if (pid == '') {
      $('select[name="area"]').html('<option value="">區縣</option>');
      return;
    }
    
    $.get('/api/area', {pid: pid}, function(data) {
      var options = '<option value="">區縣</option>';
      for (var i = 0; i < data.length; i++) {
        options += '<option value="' + data[i].id + '">' + data[i].name + '</option>';
      }
      $('select[name="area"]').html(options);
    });
  });
});
</script>

該組件依賴jQuery。

五、地址數據介面

為了使詳細地址選擇組件能夠動態獲取省、市、區數據,需要提供地址數據介面。

以下是簡單的地址數據介面代碼示例:

<?php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

if ($_SERVER['REQUEST_METHOD'] == 'GET') {
  switch ($_GET['action']) {
    case 'city':
      $stmt = $pdo->prepare('SELECT * FROM city WHERE pid = ?');
      $stmt->execute([$_GET['pid']]);
      $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
      break;
    case 'area':
      $stmt = $pdo->prepare('SELECT * FROM area WHERE pid = ?');
      $stmt->execute([$_GET['pid']]);
      $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
      break;
  }
  
  header('Content-Type: application/json');
  echo json_encode($result);
}

其中,上述代碼需要根據實際情況修改資料庫連接信息。

六、總結

大陸省市區三級聯動資料庫和詳細地址選擇組件可以快速地完成表單地址選擇功能的開發,同時也為後續有關地址相關開發提供了方便。

但需要注意的是,使用該組件前需要填充好資料庫中的省、市、區數據,並提供好數據介面。

原創文章,作者:UEFK,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/138313.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
UEFK的頭像UEFK
上一篇 2024-10-04 00:19
下一篇 2024-10-04 00:19

相關推薦

  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝資料庫方案

    本文將介紹在openeuler操作系統中安裝資料庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟體源 sudo…

    編程 2025-04-29
  • 資料庫第三範式會有刪除插入異常

    如果沒有正確設計資料庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係資料庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的資料庫存儲引擎

    本文將介紹兩款高性能的資料庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • Python怎麼導入資料庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的資料庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28
  • Think-ORM數據模型及資料庫核心操作

    本文主要介紹Think-ORM數據模型建立和資料庫核心操作。 一、模型定義 Think-ORM是一個開源的ORM框架,用於簡化在PHP應用中(特別是ThinkPHP)與關係資料庫之…

    編程 2025-04-27
  • 如何使用Python將CSV文件導入到資料庫

    CSV(Comma Separated Values)是一種可讀性高、易於編輯與導入導出的文件格式,常用於存儲表格數據。在數據處理過程中,我們有時需要將CSV文件導入到資料庫中進行…

    編程 2025-04-27
  • Python批量導入資料庫

    本文將介紹Python中如何批量導入資料庫。首先,對於數據分析和挖掘領域,資料庫中批量導入數據是一個必不可少的過程。這種高效的導入方式可以極大地提高數據挖掘、機器學習等任務的效率。…

    編程 2025-04-27
  • Activiti 6自動部署後不生成資料庫act_hi_*的解決方法

    本文將從多個方面詳細闡述Activiti 6自動部署後不生成資料庫act_hi_*的問題,並提供對應的代碼示例。 一、問題分析 在使用Activiti 6部署流程後,我們發現act…

    編程 2025-04-27
  • Python更新資料庫數據

    Python更新資料庫數據是一個非常實用的功能。在工作中,我們經常需要從外部獲取數據,然後將這些數據保存到資料庫中,或者對現有資料庫中的數據進行更新。Python提供了許多庫和框架…

    編程 2025-04-27

發表回復

登錄後才能評論