【问题标题】:How to get children of a particular parent (parent id) and displaying output in genealogy tree如何获取特定父级(父级 ID)的子级并在族谱树中显示输出
【发布时间】:2019-08-23 11:15:45
【问题描述】:

我正在尝试使用父 ID 将特定父数据库中的子数据输出到家谱树。

我是 php 新手,但我已经能够从顶部开始显示整个树。

function getChildren($parent) {
$query = "SELECT * FROM member_log WHERE parent_id = $parent";
$result = mysql_query($query);
$children = array();
$i = 0;
while($row = mysql_fetch_assoc($result)) {
    $children[$i] = array();
    $children[$i]['username'] = $row['username'];
    $children[$i]['children'] = getChildren($row['id'] );
$i++;
}
return $children;
}

$finalResult = getChildren('0');

function printList($array = null) {
    if (count($array)) {
        echo "<ul>";

        foreach ($array as $item) {
            echo "<li>";
            echo "<a href= \"#\"> " . $item['username'] . "</a>";
            if (count($item['children'])) {
                printList($item['children']);
            }
            echo "</li>";
        }

        echo "</ul>";
    }
}

这样才能得到结果

printList();

标识 |父母身份证 |名称 |
1 | 0 |第一个用户 |
2 | 1 |第二个用户|
3 | 1 |第三位用户 |
4 | 1 |第 4 位用户 |
6 | 2 |第 5 位用户 |
7 | 2 |第 6 位用户 |
8 | 2 |第 7 位用户 |

如果我想获得第二个用户的所有孩子,我应该获得第五个、第六个和第七个用户。我的第一个用户将有第 2、第 3 和第 4 个用户作为孩子,第 5、第 6 和第 7 个用户作为孙子。

【问题讨论】:

  • 不要使用 mysql_* 。现在已弃用。使用mysqli_*PDO
  • 你已经定义了 $children $children = array(); 不要在这里再次定义 $children[$i] = array(); -> 这已经是一个数组了

标签: php mysql


【解决方案1】:

请查看此网址:-Why shouldn't I use mysql_* functions in PHP?

当前问题的解决方案是:-

function getChildren($parent) {
    $query = "SELECT * FROM member_log WHERE parent_id = $parent";
    $result = mysql_query($query);
    $children = array();
    while($row = mysql_fetch_assoc($result)) {
        $children[$row['id']]['username'] = $row['username'];
        $children[$row['id']]['children'] = getChildren( $row['id'] );
    }
    return $children;
}

【讨论】:

  • @OtunMusaBashir 很高兴为您提供帮助。但是请检查我给出的 URL 并立即与mysqli_*PDO 一起转向 PHP7。
  • 感谢@Alive to Die,我已经做到了,现在都在mysqli_中
  • 如果我想获取子节点的数量怎么办?
  • @OtunMusaBashir 请就此提出一个新问题。有人肯定会回答。在新问题中添加正确的输入数据、您的努力和预期结果。把问题链接放在这里。如果我有空,我会考虑并尝试回答
猜你喜欢
  • 2020-12-09
  • 2016-11-17
  • 1970-01-01
  • 2013-10-04
  • 1970-01-01
  • 1970-01-01
  • 2012-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多