星空2020 2022-10-15 14:34 采纳率: 64.1%
浏览 26
已结题

layui+ajax+php后台如何实现下拉框八级联动?

mysql数据表结构如下demo1,如何链接后构造八级联动数据?


```sql
DROP TABLE IF EXISTS `demo1`;
CREATE TABLE `demo1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`种类` varchar(32) DEFAULT NULL,
`品名` varchar(32) DEFAULT NULL,
`地区` varchar(32) DEFAULT NULL,
`总监` varchar(32) DEFAULT NULL,
`一线经理` varchar(32) DEFAULT NULL,
`二线经理` varchar(32) DEFAULT NULL,
`主管` varchar(32) DEFAULT NULL,
`组长` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;

INSERT INTO `demo1` VALUES ('1', '食品', '水果','张三','黎明','巩昌','张明','吾悦','李青');
INSERT INTO `demo1` VALUES ('2', '食品', '蔬菜','AA','BB','CC','DD','EE','FF');
INSERT INTO `demo1` VALUES ('3', '生活用品', '灶台','AA','AC1','AC2','DD','EE','FF');
INSERT INTO `demo1` VALUES ('4', '食品', '水果','AA','CC01','CC02','DD01','EE01','FF001');
INSERT INTO `demo1` VALUES ('5', '生活用品', '灶台','AA','CC01','CC02','DD01','EE01','FF001');
INSERT INTO `demo1` VALUES ('6', '生活用品', '实木桌','AA','CC01','CC02','DD01','EE01','FF001');
INSERT INTO `demo1` VALUES ('7', '其他', 'G2','AA','CC01','32000','DD01','EE01','FF001');
INSERT INTO `demo1` VALUES ('8', '其他', 'H3','AA','CC01','5555','DD01','EE01','FF001');
INSERT INTO `demo1` VALUES ('9', '生活用品', '实木床','AA','77777','CC02','88888','EE01','FF001');
INSERT INTO `demo1` VALUES ('10', '食品', '蔬菜','AA','FF01','ER888','0001','88888','444409');

链接数据库

```php
//////////data.php
<?php
$db=mysqli_connect("localhost","root","123456","test");
$result=mysqli_query($db,"select * from protype",MYSQLI_USE_RESULT);
$rs=mysqli_fetch_all($result,MYSQLI_ASSOC);
mysqli_free_result($result);
mysqli_close($db);
$s=json_encode($rs);
echo "var arrType=". $s;
?>


<script src="data.php"></script>
<script>
    /////////////如何构造八级联动数据/////////
    
    var kvType = {};
    Array.from(new Set(arrType.map(i => i.种类))).forEach(种类 => {
        var 品名s = Array.from(new Set(arrType.filter(i => i.种类 == 种类).map(i => i.品名))).map(i => ({ 品名: i }));
        kvType[种类] = {  };
        品名s.forEach(i => {
            kvType[种类][i.品名]= arrType.filter(x => x.种类 == 种类 && x.品名 == i.品名).map(i => i.地区);
        });
    });
</script>


  • 写回答

1条回答 默认 最新

  • 多放点洗衣粉 2022-10-20 10:38
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月12日
  • 已采纳回答 1月4日
  • 修改了问题 10月15日
  • 创建了问题 10月15日

悬赏问题

  • ¥15 C++对比不同编码下相同字符串
  • ¥15 pyqt5设计界面控件之间的空白想消除
  • ¥15 想请教大家关于机器学习的问题
  • ¥15 虚幻UE保存Actor位置失败
  • ¥15 多个.nii合并为.nii.gz格式
  • ¥50 现在需要统计2023年全年 “签收时间(qssj)” 到 “提交时间(tjsj)” 小于半小时的业务量,但是要排除掉周末的时间,同时还要排除中午休息的时间。
  • ¥50 opencv模板匹配为何图像差别大仍然匹配数值高?
  • ¥15 如何成功完成主菜单和分菜单的代码编程C++
  • ¥15 怎样采集或者其它途径拿到全国最新个体工商户数据
  • ¥20 我是一名大学生,想学习java是自学还是报培训班呢