Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在html+php(codeIgniter)中呈现树_Php_Mysql_Html_Codeigniter_Adjacency List - Fatal编程技术网

如何在html+php(codeIgniter)中呈现树

如何在html+php(codeIgniter)中呈现树,php,mysql,html,codeigniter,adjacency-list,Php,Mysql,Html,Codeigniter,Adjacency List,我有一个邻接模型列表,这是查询: 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

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

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; ?>

没有重复是可能的吗?

你在这里做的事情似乎有点复杂和僵化。创建数据库表时,每行都有自己的category\u id和parent\u id,这样不是更好吗?ie为顶级父级提供父级id 0,子级获取父级类别id的父级id。这将为您提供无限的深度,并且在渲染树时更易于编码。例如:

用于第一级层次结构的SQL-

从父\u id=0的\u表中选择*

用于第二层次结构的SQL-

从您的表格中选择*,其中父级\u id=第一级的类别\u id

第三级层次结构的SQL-

从您的表中选择*,其中父级\u id=第二级的类别\u id


依此类推……

neved做了类似的事情,如果有人能给我一个链接来阅读一些东西或者更好的一个小例子,我会很感激使用ajax来加载树,而不是加载完整的树。使用类似的方法,但是如果SELECT的每个查询都返回多行,并且mysql给我一个错误怎么办?刚刚用Codeigniter尝试了这个实现,效果不错。为toUL函数构建一个助手,并更改数组操作以处理查询返回的行。这样做的好处是,您只需要一个查询来选择categories表中的所有行。
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
   }
}