星空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日

悬赏问题

  • ¥20 while循环中OLED显示中断中的数据不正确
  • ¥15 这个视频里的stm32f4代码是怎么写的
  • ¥15 串口发送数据和接收数据
  • ¥15 JNA调用DLL报堆栈溢出错误(0xC00000FD)
  • ¥15 请教SGeMs软件的使用
  • ¥15 自己用vb.net编写了一个dll文件,如何只给授权的用户使用这个dll文件进行打包编译,未授权用户不能进行打包编译操作?
  • ¥50 深度学习运行代码直接中断
  • ¥20 需要完整的共散射点成像代码
  • ¥15 编写vba代码实现数据录入工作
  • ¥15 做过TCL海信电视小米电视相关影视会员软件私我