1. /**
  2. * Notes:省市县三级联动
  3. * Created by depressiom
  4. * Date: 2022年4月14日
  5. */
  6. public function getCityData(){
  7. //获取一级
  8. $cityList = M('area')->where(['type'=>0])->select(); // 根据type 取一级
  9. $data = array();
  10. if(count($cityList)>0){
  11. foreach ($cityList as $v) {
  12. $data[$v['id']] = array(
  13. "id" => $v['id'],
  14. "value" => $v['area_code'],
  15. "label" => $v['name'],
  16. "children" => array()
  17. );
  18. //获取二级
  19. $cityTow = M('area')->where(['type' => 1,'parent_code'=>$v['id']])->select(); // 数据库通过关联的 一级id为 二级的父code type为1 表示市区
  20. if(count($cityTow)>0) {
  21. foreach ($cityTow as $l) {
  22. $data[$v['id']]['children'][$l['id']] = array(
  23. "id" => $l['id'],
  24. "value" => $l['area_code'], // 这里因为第一次取得是$v的值 所以出现二级与一级name一样
  25. "label" => $l['name'],
  26. "children" => array()
  27. );
  28. //获取三级
  29. $cityThree = M('area')->where(['type' => 2, 'parent_code' => $l['id']])->select(); // 三级同理
  30. if(count($cityTow)>0) {
  31. foreach ($cityThree as $t) {
  32. $data[$v['id']]['children'][$l['id']]['children'][] = array(
  33. "id" => $t['id'],
  34. "value" => $t['area_code'],
  35. "label" => $t['name'],
  36. );
  37. }
  38. }else{
  39. $msg = array(
  40. "status" => -1,
  41. "msg" => "获取县数据失败!",
  42. "result" => null
  43. );
  44. $this->ajaxReturn($msg);
  45. exit ();
  46. }
  47. }
  48. }else{
  49. $msg = array(
  50. "status" => -1,
  51. "msg" => "获取市数据失败!", //.json_encode($cityTow,true) 数据不正常是前端展示查看结果
  52. "result" => null
  53. );
  54. $this->ajaxReturn($msg);
  55. exit ();
  56. }
  57. }
  58. }else{
  59. $msg = array(
  60. "status" => -1,
  61. "msg" => "获取省数据失败!",
  62. "result" => null
  63. );
  64. $this->ajaxReturn($msg);
  65. exit ();
  66. }
  67. if (count($data)<=0) {
  68. $msg = array(
  69. "status" => -1,
  70. "msg" => "数据出错",
  71. "result" => null
  72. );
  73. $this->ajaxReturn($msg);
  74. exit ();
  75. }
  76. //格式化数据
  77. $res = array();
  78. foreach ($data as $val) {
  79. $item = array();
  80. foreach ($val['children'] as $v) {
  81. $item[] = $v;
  82. }
  83. $res[] = array(
  84. 'id' => $val['id'],
  85. "value" => $val['value'], // 这里是格式化数据,因为我第一层格式已经将$data里面的字段名字改变 所以用已改变的值,就是因为这里导致找了半小时
  86. "label" => $val['label'],
  87. 'children' => $item
  88. );
  89. }
  90. $msg = array(
  91. "status" => 1,
  92. "msg" => "数据获取成功",
  93. "result" => $res,
  94. "data"=>$data,
  95. );
  96. $this->ajaxReturn($msg);
  97. }

感谢大佬的分享 原作者地址

记一次 PHP 省市县三级联动 数据库取值的更多相关文章

  1. jQuery - 全国省市县三级联动

    最近有空用jquery做了一个全国省市县的三级联动,在以后或许可以用的到 ,遗憾的是我还没用封装,等有空看能不能封装成一个插件 废话不多说,贴上代码: <!doctype html> &l ...

  2. wex5 实战 省市县三级联动与地址薄同步

    无论是商城,还是快递,都要用到省市县三级联动,和地址薄,今天就以实战来制作,难点有3个: 1:三级联动,有wex5组件实现,相对简单,实战里对行数据进行了拼接 2:  地址薄选项,利用inputSel ...

  3. 省市县三级联动 sql语句

    发现在网上的省市县三级联动大部分是mysql的.就算是sqlserver的,也不准确.于是就把mysql的给改了下,适用sqlserver.sql语句如下: CREATE TABLE Dic_Area ...

  4. Android 省市县 三级联动(android-wheel的使用)[转]

    转载:http://blog.csdn.net/lmj623565791/article/details/23382805 今天没事跟群里面侃大山,有个哥们说道Android Wheel这个控件,以为 ...

  5. Android 省市县 三级联动(android-wheel的使用)

    转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/23382805 今天没事跟群里面侃大山,有个哥们说道Android Wheel这个 ...

  6. php仿经典省市县三级联动

    之前有个需求要写个类似省市县三级联动的页面,于是,网上找了点资料看了下,其实原理很简单: 当我们选择一级栏目中某条记录的时候,会获取该栏目的vaule值,并发起ajax请求,后台根据这个vaule值, ...

  7. 项目总结01:JSP mysql SpringMvc下中国省市县三级联动下拉框

    JSP mysql SpringMvc下中国省市县三级联动下拉框 关键词 JSP  mysql数据库  SpringMvc  ajax   Controller层  Service层  中国地区  省 ...

  8. Day 16 之二 省市县三级联动

    摘录自:雨神,供参考! province_dic = { "河北": { "石家庄": ["鹿泉", "藁城", &qu ...

  9. android:省市县三级联动(基于json和spring)

    一.请看效果图": 二.程序的代码: 1.MainActivity.java package com.loveplusplus.loader.demo.ui; import org.json ...

随机推荐

  1. zk 节点宕机如何处理?

    Zookeeper 本身也是集群,推荐配置不少于 3 个服务器.Zookeeper 自身也要保 证当一个节点宕机时,其他节点会继续提供服务. 如果是一个 Follower 宕机,还有 2 台服务器提供 ...

  2. 转:C++初始化成员列表

    转载至:https://blog.csdn.net/zlintokyo/article/details/6524185 C++初始化成员列表和新机制初始化表达式列表有几种用法: 1.如果类存在继承关系 ...

  3. SqlMapConfig.xml文件详解

    SqlMapConfig.xml 是 mybatis 的全局配置文件,配置内容如下: properties(属性) settings(全局配置参数) typeAliases(类型别名) typeHan ...

  4. nginx搭建简单直播服务器

    1.下载模块(nginx-rtmp-module) 1 cd /data/nginx 2 yum install git3 git clone https://github.com/arut/ngin ...

  5. js技术之拖动table标签

    一.js技术之拖动table标签 起因:前几天公司,突然安排一个任务 任务描述:要求尺码table列表要像Excel表中一样可以直接移动整行尺码到任意行位置 技术点:采用ui的sortable技术来h ...

  6. 如何将Matlab中“模糊控制设计器”的隶属度函数导出图片(figure)

    如何将Matlab中"模糊控制设计器"的隶属度函数导出图片(figure)详情参考matlab官方帮助手册:plotmf()函数https://www.mathworks.com/ ...

  7. w3schools网站的HTML教程之HTML编辑器

    使用记事本或文本编辑器编写 HTML HTML 可以使用如下专业的 HTML 编辑器进行编辑: Microsoft WebMatrix Sublime Text 然而,我们推荐使用记事本(PC)或文本 ...

  8. 使用 jfinal + beetl + bootstrap 实现商城展示及管理系统

    使用 jfinal+beetl 在线商品展示系统 使用 git clone https://github.com/zhouchong741/jfinal-demo.git 使用 IntelliJ ID ...

  9. 前端面试题整理——VUE相关题目与回答

    1.v-if与v-show的区别? v-if的原理是根据判断条件来动态的进行增删DOM元素, v-show是根据判断条件来动态的进行显示和隐藏元素,频繁的进行增删DOM操作会影响页面加载速度和性能所以 ...

  10. java中请给出一个抽象类,可以继承实体类的例子

    例1.7.2(抽象类可以继承实体类)- class VehMark_to_win {    void steer() {        System.out.println("Turn st ...