【问题标题】:Building a family tree from mysql database, which has some schema从具有一些模式的mysql数据库构建家谱
【发布时间】:2014-12-03 16:03:29
【问题描述】:

我只需要一个从 mysql 检索数据并建立家谱的 php 代码。

Sql 数据具有以下架构。

(Id, Name, ParentId1, ParentId2)  

我将插入数据为

INSERT INTO table_name (`Id`, `Name`, `ParentId1`, `ParentId2`)
VALUES ('100', 'Name_1', 'Parent_1', 'Parent_2')

如果 parentId1 和 ParentId2 指定为 0,则他在族的顶部。 代码应根据 parentId1 和 parentId2 生成家谱。 根据匹配的 parentId,名称应附加到父级。可选地,如果我指定两个示例婚姻之间的关系,它们应该在代码中连接。 如果您只是告诉我如何设计或方法的概述,就可以了。

【问题讨论】:

  • 请注意,按照惯例,NULL 通常用于表示孤儿。
  • 如果你决定使用现成的 jquery 树插件。它们中的大多数需要 json 数据作为输入。使用查询和循环在服务器端创建所需的 json 数据。
  • 好吧,就这样吧。你能告诉我如何接近
  • 这不是一个简单的问题...您可能需要使用递归查询。

标签: php mysql


【解决方案1】:

我使用这个函数来做到这一点。 我创建的这个函数返回一个带有线性数据树的表

您可以按照想法进行定制

static function display_child_nodes($parent_id, $level,$data,$index,$dr){//first level=  NULL,0
       global $data, $index,$dr;

       if(is_null($parent_id)){
            $parent_id ="NULL";
       }

       if (isset($index[$parent_id])) {           
            foreach ($index[$parent_id] as $id) {
                $mark=NULL;
                if($level<1){
                    $content = $data[$id][PROCEDIEMNTOS_PROFISSIONAIS_NOME];

                }
                else{
                    $content =str_repeat("&nbsp", $level*2) .$data[$id][PROCEDIEMNTOS_PROFISSIONAIS_NOME];
                }
                $dr[$id]=$content;
                self::display_child_nodes($id, $level + 1,$data,$index,$dr);
            }        
    }    
    return $dr;   
}

【讨论】:

    猜你喜欢
    • 2018-07-18
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 2012-09-01
    • 1970-01-01
    相关资源
    最近更新 更多