/**
* Notes:省市县三级联动
* Created by depressiom
* Date: 2022年4月14日
*/
public function getCityData(){
//获取一级
$cityList = M('area')->where(['type'=>0])->select(); // 根据type 取一级
$data = array();
if(count($cityList)>0){
foreach ($cityList as $v) {
$data[$v['id']] = array(
"id" => $v['id'],
"value" => $v['area_code'],
"label" => $v['name'],
"children" => array()
);
//获取二级
$cityTow = M('area')->where(['type' => 1,'parent_code'=>$v['id']])->select(); // 数据库通过关联的 一级id为 二级的父code type为1 表示市区
if(count($cityTow)>0) {
foreach ($cityTow as $l) {
$data[$v['id']]['children'][$l['id']] = array(
"id" => $l['id'],
"value" => $l['area_code'], // 这里因为第一次取得是$v的值 所以出现二级与一级name一样
"label" => $l['name'],
"children" => array()
);
//获取三级
$cityThree = M('area')->where(['type' => 2, 'parent_code' => $l['id']])->select(); // 三级同理
if(count($cityTow)>0) {
foreach ($cityThree as $t) {
$data[$v['id']]['children'][$l['id']]['children'][] = array(
"id" => $t['id'],
"value" => $t['area_code'],
"label" => $t['name'],
);
}
}else{
$msg = array(
"status" => -1,
"msg" => "获取县数据失败!",
"result" => null
);
$this->ajaxReturn($msg);
exit ();
}
}
}else{
$msg = array(
"status" => -1,
"msg" => "获取市数据失败!", //.json_encode($cityTow,true) 数据不正常是前端展示查看结果
"result" => null
);
$this->ajaxReturn($msg);
exit ();
}
}
}else{
$msg = array(
"status" => -1,
"msg" => "获取省数据失败!",
"result" => null
);
$this->ajaxReturn($msg);
exit ();
} if (count($data)<=0) {
$msg = array(
"status" => -1,
"msg" => "数据出错",
"result" => null
);
$this->ajaxReturn($msg);
exit ();
} //格式化数据
$res = array();
foreach ($data as $val) {
$item = array();
foreach ($val['children'] as $v) {
$item[] = $v;
}
$res[] = array(
'id' => $val['id'],
"value" => $val['value'], // 这里是格式化数据,因为我第一层格式已经将$data里面的字段名字改变 所以用已改变的值,就是因为这里导致找了半小时
"label" => $val['label'],
'children' => $item
);
} $msg = array(
"status" => 1,
"msg" => "数据获取成功",
"result" => $res,
"data"=>$data,
);
$this->ajaxReturn($msg);
}

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

记一次 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. JVM中的常量池

    在Java的内存分配中,总共3种常量池: ref:https://blog.csdn.net/zm13007310400/article/details/77534349 1.字符串常量池(Strin ...

  2. 什么是sql注入?如何有效防止sql注入?

    一.什么是sql注入 利用程序员的代码bug,将输入的参数绕过校验并在系统中当做代码运行,从而攻击系统. 二.如何避免sql注入 1.对sql语句进行预编译 PreparedStatement类可以对 ...

  3. mac 安装shell

    https://blog.csdn.net/weixin_41937552/article/details/108565705

  4. requests库获取响应流进行转发

    遇到了一个问题,使用requests进行转发 requests响应流的时候,出现各种问题,问题的描述没有记录,不过Debug以下终于解决了问题.......下面简单的描述解决方案 response = ...

  5. 什么是 Hystrix 断路器?我们需要它吗?

    由于某些原因,employee-consumer 公开服务会引发异常.在这种情况下使用Hystrix 我们定义了一个回退方法.如果在公开服务中发生异常,则回退方法返回一些默认值. 如果 firstPag ...

  6. Java 中 IO 流分为几种?

    按功能来分:输入流(input).输出流(output).按类型来分:字节流和字符流.字节流和字符流的区别是:字节流按 8 位传输以字节为单位输入输出数据,字符流按 16 位传输以字符为单位输入输出数 ...

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

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

  8. python学习笔记(三)——函数

    函数定义 def 函数名(形参 . . . ) 函数体 1. 函数参数 返回值:可以有一个或多个 形参:支持默认形参.关键字形参.可变参数形参等 1.1 必须参数 调用时传入的参数必须与定义时相同. ...

  9. Spring Framework远程代码执行漏洞复现(CVE-2022-22965)

    1.漏洞描述 漏洞名称 Spring Framework远程代码执行漏洞 公开时间 2022-03-29 更新时间 2022-03-31 CVE编号 CVE-2022-22965 其他编号 QVD-2 ...

  10. 巧用CSS3:target 伪类制作Dropdown下拉菜单(无JS)

    原文链接:http://devework.com/css3-target-dropdown.html :target 是CSS3 中新增的一个伪类,用以匹配当前页面的URI中某个标志符的目标元素(比如 ...