记一次 PHP 省市县三级联动 数据库取值
/**
* 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 省市县三级联动 数据库取值的更多相关文章
- jQuery - 全国省市县三级联动
最近有空用jquery做了一个全国省市县的三级联动,在以后或许可以用的到 ,遗憾的是我还没用封装,等有空看能不能封装成一个插件 废话不多说,贴上代码: <!doctype html> &l ...
- wex5 实战 省市县三级联动与地址薄同步
无论是商城,还是快递,都要用到省市县三级联动,和地址薄,今天就以实战来制作,难点有3个: 1:三级联动,有wex5组件实现,相对简单,实战里对行数据进行了拼接 2: 地址薄选项,利用inputSel ...
- 省市县三级联动 sql语句
发现在网上的省市县三级联动大部分是mysql的.就算是sqlserver的,也不准确.于是就把mysql的给改了下,适用sqlserver.sql语句如下: CREATE TABLE Dic_Area ...
- Android 省市县 三级联动(android-wheel的使用)[转]
转载:http://blog.csdn.net/lmj623565791/article/details/23382805 今天没事跟群里面侃大山,有个哥们说道Android Wheel这个控件,以为 ...
- Android 省市县 三级联动(android-wheel的使用)
转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/23382805 今天没事跟群里面侃大山,有个哥们说道Android Wheel这个 ...
- php仿经典省市县三级联动
之前有个需求要写个类似省市县三级联动的页面,于是,网上找了点资料看了下,其实原理很简单: 当我们选择一级栏目中某条记录的时候,会获取该栏目的vaule值,并发起ajax请求,后台根据这个vaule值, ...
- 项目总结01:JSP mysql SpringMvc下中国省市县三级联动下拉框
JSP mysql SpringMvc下中国省市县三级联动下拉框 关键词 JSP mysql数据库 SpringMvc ajax Controller层 Service层 中国地区 省 ...
- Day 16 之二 省市县三级联动
摘录自:雨神,供参考! province_dic = { "河北": { "石家庄": ["鹿泉", "藁城", &qu ...
- android:省市县三级联动(基于json和spring)
一.请看效果图": 二.程序的代码: 1.MainActivity.java package com.loveplusplus.loader.demo.ui; import org.json ...
随机推荐
- 半吊子菜鸟学Web开发5 -- PHP开发环境配置
本文参考自:http://blog.csdn.net/angon823/article/details/54415855 Ubuntu16.04 默认 apt-get install apache2 ...
- java 8 一个list过滤另外一个list
- 怎么得到InnoDB主键索引B+树的高度?
上面我们通过推断得出B+树的高度通常是1-3,下面我们从另外一个侧面证明这个结论.在InnoDB的表空间文件中,约定page number为3的代表主键索引的根页,而在根页偏移量为64的地方存放了该B ...
- 您使用了哪些 starter maven 依赖项?
使用了下面的一些依赖项 spring-boot-starter-activemq spring-boot-starter-security 这有助于增加更少的依赖关系,并减少版本的冲突.
- Dubbo 和 Dubbox 之间的区别?
Dubbox 是继 Dubbo 停止维护后,当当网基于 Dubbo 做的一个扩展项目,如 加了服务可 Restful 调用,更新了开源组件等.
- 转:C++11常用新特性快速一览
转载至:https://blog.csdn.net/jiange_zh/article/details/79356417 1.nullptr nullptr 出现的目的是为了替代 NULL. 在某种意 ...
- 初识Spring(为什么要使用Spring?)
Spring,英文翻译是春天的意思,而在Java中,是一个开放源代码的设计层面框架(手动滑稽,程序员的春天),他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.S ...
- Java 中,DOM 和 SAX 解析器有什么不同?
DOM 解析器将整个 XML 文档加载到内存来创建一棵 DOM 模型树,这样可以 更快的查找节点和修改 XML 结构,而 SAX 解析器是一个基于事件的解析器, 不会将整个 XML 文档加载到内存.由 ...
- CSDN博客步骤:
在SCDN看到喜欢的文章想转载又嫌一个一个敲太麻烦,干脆直接收藏.但有时候作者把原文章删除或设置为私密文章后又看不了.所以还是转载来的好.这篇博文为快速转载博客的方法,亲测有效,教程如下. 原博客原址 ...
- Living Documentation
Living Documentation Living documentation in legacy systems Living documentation, which comes from t ...