0

正在开发一个需要使用根 ID 创建子孙的项目

它以这种方式工作 user_1 注册自己,他(user_1)还注册 2、3、4、5、6 并且总共(最多)5 个子 user_2 寄存器 7、8、9、10、11 user_3 寄存器 12、13, 14、15、16 等

在 user_1 的个人资料上,一个树形表列出了他的孩子和他的孩子,还显示了他从每个注册孩子那里获得的孙辈。

                                   1
 ----------------------------------------------------------------------
    |                  |                  |               |                |
     2                3                  4               5                6
---------------     ---------------   ---------------  ------------   -------------- 
|   |   |  |  |     |   |   |  |  |   |  |   |  |  |   |  |  |  |  |  |  |  |   |   |
7   8   9  10 11    12  13 14 15  16  17 18  19 20 21  22 23 24 25 26 27 28 29 30  31                        

User_ID 不一定按顺序排列,而只是一个示例 然后,用户 1会看到他拥有的子孙总数 孩子的最大值 = 5,孙子 = 20 == (25)

我创建了一个这样的表

 id | name  | password | totalfamily | grandparent | parent_id
 ---------------------------------------------------------------

我希望这张桌子能像下面这样保存信息

id | name  | password | totalfamily | grandparent | parent_id
1     jon     ******                  NULL          NULL
2     mel     ******                  NULL          1
3     al      ******                  NULL          1
4     me      ******                  1             3

如果需要新的表结构来使其工作,那也可以。

我已经完成了注册程序(包括检查parent_id和grandparent_id)和登录

但我正在修复如何查询数据库以帮助我列出名称,如树结构以显示子孙

我知道它需要复杂的查询语句来执行

我迫切需要解决这个问题(希望它不会违反规则),因为我花了几天时间阅读我的 Mysql+PHP 的分层数据结构教程,但似乎没有一个容易朝着我的方向前进。

帮助任何人???提前致谢。

4

2 回答 2

1

我刚刚创建了 id,name parent_id 的表

+----+--------+-----------+
| id | name   | parent_id |
+----+--------+-----------+
|  1 | one    |      NULL |
|  2 | two    |         1 |
|  3 | three  |         1 |
|  4 | four   |         2 |
|  5 | five   |         2 |
|  6 | six    |         2 |
|  7 | seven  |         2 |
|  8 | eight  |         3 |
|  9 | nine   |         3 |
| 10 | ten    |         3 |
| 11 | eleven |         3 |
+----+--------+-----------+

当用户 1 想要得到所有的孩子时。查询会这样

select * from users where parent_id in(select id from users where parent_id = 1) or parent_id = 1;

我想它可以帮助你

于 2012-06-06T04:57:58.607 回答
0
+----+--------+-----------+------------+
| id | name   | parent_id |grandparentID
+----+--------+-----------+------------+
|  1 | one    |      NULL |     NULL   |
|  2 | two    |         1 |     NULL   |
|  3 | three  |         1 |      1     |
|  4 | four   |         2 |      1     |
|  5 | five   |         2 |      2     |
|  6 | six    |         2 |      2     |
|  7 | seven  |         2 |      2     |
|  8 | eight  |         3 |      3     |
|  9 | nine   |         3 |      2     |
| 10 | ten    |         3 |      1     |
| 11 | eleven |         3 |      2     |
+-------------+-----------+------------+

我就是这样考虑的。

在列出孩子的页面中,这就是我得到它的方式。

                     Normal_codes
                          |
    ---newman ---ukwangwa ---hello ---azonto

使用以下代码

        function display_tree() {  
$result = $this->qry("SELECT * FROM users WHERE Parent='?' or Parent ='?';" ,
 'in(select id from user_id from users where Parent = "'.$_SESSION['id'].'")', $_SESSION['id']);
      //select * from users where parent_id in(select id from users where parent_id = 1) or parent_id = 1;  

         echo '<div align="center">'.$_SESSION['name'].'<br></div>';
         echo '<div align="center">|</div>';
           echo '<div align="center">';
          while( $row=mysql_fetch_assoc($result)){
               echo "\n\r---".$row['name'];
              $result1 = $this->qry("SELECT * FROM users WHERE grandParent='?' or grandParent ='?';" ,
 'in(select user_id from users where grandParent = "'.$_SESSION['id'].'")', $_SESSION['id']);
             while( $row1 =mysql_fetch_assoc($result1)){ 
                //echo "<br>--".$row1['name'];  
             }
          }; 
          echo '</div>';

    }

任何人都知道任何 HTML、Javascript/Jquery 代码可以帮助我以树的形式列出子孙。

                             Normal_codes
                                  |
       ---newman ---     ukwangwa     ---  hello     ---    azonto
            |                |               |               |
   n1 n2  n3 n4 n5 n1 n2 n3 n4 n5   h1 h2 h3 h4 h4    a1 a2 a3 a4 a5

首字母是五位父母各自登记的孩子

任何帮助我查询的 PHP 代码也将不胜感激。

于 2012-06-07T12:34:18.890 回答