【问题标题】:dynamic family tree traverse php javascript动态家谱遍历 php javascript
【发布时间】:2016-04-10 09:16:19
【问题描述】:

我想创建一个可以通过后端动态添加成员的家谱网站。我正在使用 php-mvc,mysql。 我正在通过后端添加成员,我有 4 个表 1. 成员详细信息以及父亲、母亲 ID; 2 partner-显示伙伴关系 3 child - 显示孩子的关系 4兄弟 - 显示兄弟关系

我的表结构 成员

CREATE TABLE IF NOT EXISTS `members` (
  `members_id` int(10) NOT NULL AUTO_INCREMENT,
  `members_family` int(10) NOT NULL,
  `members_first_name` varchar(500) NOT NULL,
  `members_sur_name` varchar(500) DEFAULT NULL,
  `members_gender` int(10) DEFAULT '0' COMMENT '0-notset,1-male,2-female,3-transgender',
  `members_birth_date` date DEFAULT NULL,
  `members_is_living` int(10) DEFAULT NULL,
  `members_death_date` date NOT NULL DEFAULT '0000-00-00',
  `members_email` varchar(1000) DEFAULT NULL,
  `members_mobile` varchar(500) DEFAULT NULL,
  `members_telephone` varchar(500) DEFAULT NULL,
  `members_website` varchar(1000) DEFAULT NULL,
  `members_blog` varchar(1000) DEFAULT NULL,
  `members_skype` varchar(1000) DEFAULT NULL,
  `members_address` varchar(5000) DEFAULT NULL,
  `members_birth_place` varchar(1000) DEFAULT NULL,
  `members_death_place` varchar(1000) DEFAULT NULL,
  `members_profession` varchar(1000) DEFAULT NULL,
  `members_company` varchar(1000) DEFAULT NULL,
  `members_interests` varchar(5000) DEFAULT NULL,
  `members_notes` varchar(1000) DEFAULT NULL,
  `members_father` varchar(10) DEFAULT NULL,
  `members_mother` int(10) DEFAULT NULL,
  `members_generation` int(10) DEFAULT NULL,
  `members_status` int(10) NOT NULL,
  `members_image` varchar(1000) DEFAULT NULL,
  `members_inserttime` datetime NOT NULL,
  `members_updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`members_id`)
) 

合作伙伴

CREATE TABLE IF NOT EXISTS `partner` (
  `partner_id` int(10) NOT NULL AUTO_INCREMENT,
  `partner_member` int(10) NOT NULL,
  `partner_of_member` int(10) NOT NULL COMMENT 'partner of which member in members_table',
  `partner_relation_status` int(10) NOT NULL COMMENT '1-current,2-ex-partner',
  `partner_status` int(10) NOT NULL,
  `partner_inserttime` datetime NOT NULL,
  `partner_updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`partner_id`)
) 

孩子

CREATE TABLE IF NOT EXISTS `child` (
  `child_id` int(10) NOT NULL AUTO_INCREMENT,
  `child_member` int(10) NOT NULL,
  `child_of_member` int(10) NOT NULL,
  `child_status` int(10) NOT NULL,
  `child_inserttime` datetime NOT NULL,
  `child_updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`child_id`)
)

兄弟姐妹

CREATE TABLE IF NOT EXISTS `sibling` (
  `sibling_id` int(10) NOT NULL AUTO_INCREMENT,
  `sibling_member` int(10) NOT NULL,
  `sibling_of_member` int(10) NOT NULL COMMENT 'sibling of which member in mebers table',
  `sibling_relation` int(10) NOT NULL COMMENT '1-younger,2-elder',
  `sibling_status` int(10) NOT NULL,
  `sibling_inserttime` datetime NOT NULL,
  `sibling_updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`sibling_id`)
) 

我正在向此表添加值。现在我需要将其显示为树结构。 我没有从我的搜索中得到任何想法, 谁能帮我把数据作为家谱遍历。

【问题讨论】:

    标签: javascript php mysql family-tree


    【解决方案1】:

    我不认为您的表结构是最好的解决方案。您应该创建 1 个表:“Person”并将每个人都放入该表中。您可以在“人员”表中添加一个“角色”字段,以指示该人的“角色”(父亲、母亲、伴侣等)。有关分层数据的更多信息:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

    如果你可以查询数据,那么你只需将它转换成一个json树。查看“jqTree”了解更多关于 json 树结构的信息。

    【讨论】:

      猜你喜欢
      • 2016-09-14
      • 2022-01-15
      • 1970-01-01
      • 2023-03-24
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-05
      相关资源
      最近更新 更多