繁体   English   中英

无限深度类别,子类别

[英]Unlimited depth category, sub-category

我正在尝试在我的网站中实现无限深度类别的子类别部分。 我对此很困惑。 表结构是

id                medium int  auto incrimant , primary
name              varchar
parent            medium int

我正在寻找以下问题的解决方案:

  1. 如何编写代码以允许用户输入无限的类别,子类别?
  2. 如何在选择框中以树顺序加载类别和子类别?

使用MPTT,您需要稍微更改表结构才能使用MPTT。 但这是无限深度的无限方式。

资料来源: http : //waliaz.com/modified-pre-ordered-traversal-tree-mptt---explained.html

您可以创建一个数组并递归地构建树:

$q = mysql_query("SELECT id, parent_id, name FROM categories");
while ($r = mysql_fetch_row($q)) {
  $names[$r[0]] = $r[2];
  $children[$r[0]][] = $r[1];
 }

function render_select($root=0, $level=-1) {
  global $names, $children;
  if ($root != 0)
    echo '<option>' . strrep(' ', $level) . $names[$root] . '</option>';
  foreach ($children[$root] as $child)
    render_select($child, $level+1);
}

echo '<select>';
render_select();
echo '</select>';
  1. 更加高效的层次体系

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM