记一次 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 ...
随机推荐
- 一种优雅的Golang的库插件注册加载机制
一种优雅的Golang的库插件注册加载机制 你好,我是轩脉刃. 最近看到一个内部项目的插件加载机制,非常赞.当然这里说的插件并不是指的golang原生的可以在buildmode中加载指定so文件的那种 ...
- Prometheus+alertmanager告警配置-2
prometheus 告警 prometheus 通过alertmanager进行告警 实现监控告警的步骤: 在prometheus中定义告警规则rule_files alertmanager配置告警 ...
- [NPUCTF2020]Baby Obfuscation wp
整体观察main函数,可以发现用户自定义函数和变量存在混淆,猜测为函数名及变量名asc混淆. 对函数进行分析: Fox1为欧几里得算法求最大公约数 Fox5其实是pow Fox4根据逻辑数学的法则实际 ...
- 为什么使用 Executor 框架比使用应用创建和管理线程好?
为什么要使用 Executor 线程池框架 1.每次执行任务创建线程 new Thread()比较消耗性能,创建一个线程是比较耗 时.耗资源的. 2.调用 new Thread()创建的线程缺乏管理, ...
- 作为 务注册中心,Eureka比Zookeeper好在哪里?
(1)Eureka保证的是可用性和分区容错性,Zookeeper 保证的是一致性和分区容错性 . (2)Eureka还有一种自我保护机制,如果在15分钟内超过85%的节点都没有正常的心跳,那么Eure ...
- System.getenv和getProperty的区别
/** * System.getenv()是获取---环境变量(environment variables), * 系统层面的,好比我linux系统里的.bash_profile文件里面的变量 * 返 ...
- Mock 或 Stub 有什么区别?
存根 一个有助于运行测试的虚拟对象. 在某些可以硬编码的条件下提供固定行为. 永远不会测试存根的任何其他行为. 例如,对于空堆栈,您可以创建一个只为 empty()方法返回 true 的存根.因此, ...
- 学习 Haproxy (二)
1. Haproxy介绍 Haproxy是一个开源的高性能的反向代理或者说是负载均衡服务软件之一,它支持双机热备.虚拟主机.基于TCP和HTTP应用代理等功能.其配置简单,而且拥有很好的对服务器节点的 ...
- 提交Form表单,submit之前做js判断处理
效果: 在点击提交按钮时,首先进行js判断, 如果不符合条件,则alert出提示信息,并return false. 主要点就在于给form表单添加一个onsubmit事件. 在onsubmit事件中定 ...
- PID参数整定
PID参数整定方法很多,常见的工程整定方法有临界比例度法.衰减曲线法和经验法.云南昌晖仪表制造有限公司以图文形式介绍以临界比例度法和衰减曲线法整定调节器PID参数方法.临界比例度法一个调节系统,在阶跃 ...