如何在HTML + PHP渲染树(笨)(How render a Tree in html + ph

2019-10-16 23:07发布

我有一个邻接型号列表中,这是查询:

SELECT t1.FIO AS lev1, t2.FIO AS lev2, t3.FIO AS lev3, t4.FIO AS lev4, t5.FIO AS lev5, t6.FIO AS lev6, t7.FIO AS lev7, t8.FIO AS lev8, t9.FIO AS lev9, t10.FIO AS lev10, t11.FIO AS lev11, t12.FIO AS lev12, t13.FIO AS lev13, t14.FIO AS lev14, t15.FIO AS lev15, t16.FIO AS lev16, t17.FIO AS lev17, t18.FIO AS lev18, t19.FIO AS lev19, t20.FIO AS lev20, t21.FIO AS lev21, t22.FIO AS lev22, t23.FIO AS lev23, t24.FIO AS lev24 FROM users AS t1 LEFT JOIN users AS t2 ON t2.parent_id = t1.id LEFT JOIN users AS t3 ON t3.parent_id = t2.id LEFT JOIN users AS t4 ON t4.parent_id = t3.id LEFT JOIN users AS t5 ON t5.parent_id = t4.id LEFT JOIN users AS t6 ON t6.parent_id = t5.id LEFT JOIN users AS t7 ON t7.parent_id = t6.id LEFT JOIN users AS t8 ON t8.parent_id = t7.id LEFT JOIN users AS t9 ON t9.parent_id = t8.id LEFT JOIN users AS t10 ON t10.parent_id = t9.id LEFT JOIN users AS t11 ON t11.parent_id = t10.id LEFT JOIN users AS t12 ON t12.parent_id = t11.id LEFT JOIN users AS t13 ON t13.parent_id = t12.id LEFT JOIN users AS t14 ON t14.parent_id = t13.id LEFT JOIN users AS t15 ON t15.parent_id = t14.id LEFT JOIN users AS t16 ON t16.parent_id = t15.id LEFT JOIN users AS t17 ON t17.parent_id = t16.id LEFT JOIN users AS t18 ON t18.parent_id = t17.id LEFT JOIN users AS t19 ON t19.parent_id = t18.id LEFT JOIN users AS t20 ON t20.parent_id = t19.id LEFT JOIN users AS t21 ON t21.parent_id = t20.id LEFT JOIN users AS t22 ON t22.parent_id = t21.id LEFT JOIN users AS t23 ON t23.parent_id = t22.id LEFT JOIN users AS t24 ON t24.parent_id = t23.id LEFT JOIN users AS t25 ON t25.parent_id = t24.id WHERE t1.id = 16

这是一个查询,以深度的24级使用相邻型号列表

之后,我做出这样的:

<? for($i = 0; $i < $query->num_rows(); $i++): ?>
<? $row = $query->row($i); ?>
    <? for($n = 1; $n < 25; $n++): ?>
    <? $lev = "lev$n"; ?>
    <?= $row->$lev; ?>
    <? endfor; ?>
<? endfor; ?>

它使每一行的只是领域,我真的不知道热使其hieararchical,我使用笨,什么是更好的在这里使用的行或对象?

我需要做这样的事情:

root_parent {
   parent_1 {
      child_1.name
      child_2.name
      child_3.name
   }

   parent_2 {
      child_1.name
      child_2.name
      child_3.name
   }

   parent_3 {
      child_1.name
      child_2.name
      child_3.name
   }
}

没有repeatings这可能吗?

Answer 1:

似乎有点复杂和不灵活的你在这里做什么吉尔斯。 这岂不是更好地创建具有自身的CATEGORY_ID和PARENT_ID每一行的数据库表? 即给顶层家长0 PARENT_ID和孩子们把他们的父母CATEGORY_ID的PARENT_ID。 这将带给你无限的深度,当你渲染树会更容易代码。 例如:

SQL你的层次结构的第一级 -

SELECT * FROM (your_table) WHERE parent_id=0

SQL您hierarcy的第二级 -

SELECT * FROM (your_table) WHERE parent_id=(category_id of first level)

SQL您hierarcy的第三个层次 -

SELECT * FROM (your_table) WHERE parent_id=(category_id of second level)

等等...



文章来源: How render a Tree in html + php(codeIgniter)