Как сделать рекурсивное дерево разборным
У меня есть рекурсивное древовидное представление, которое извлекает всю информацию из базы данных, и мне хотелось бы получить представление о том, как я могу сделать ее разборной. Я пытался использовать Jquery и Javascript, но ни одна попытка не имела никакого эффекта. Не уверен, что это была просто ошибка с моей стороны или что-то еще.
вот мой основной код:
<body>
<?php
mysql_connect('localhost', 'root');
mysql_select_db('test');
$qry="SELECT * FROM treeview_items";
$result=mysql_query($qry);
$arrayCategories = array();
while($row = mysql_fetch_assoc($result)){
$arrayCategories[$row['id']] = array("parent_id" => $row['parent_id'], "name" =>
$row['title']);
}
//createTree($arrayCategories, 0);
function createTree($array, $currentParent, $currLevel = 0, $prevLevel = -1) {
foreach ($array as $categoryId => $category) {
if ($currentParent == $category['parent_id']) {
if ($currLevel > $prevLevel) echo " <ul> ";
if ($currLevel == $prevLevel) echo " </li> ";
echo '<li id="'.$categoryId.'" onclick=child(this.id);>
<span>'.$category['name'].'</span>';
if ($currLevel > $prevLevel) { $prevLevel = $currLevel; }
$currLevel++;
createTree ($array, $categoryId, $currLevel, $prevLevel);
$currLevel--;
}
}
if ($currLevel == $prevLevel) echo " </li> </ul> ";
}
?>
<div id="content" class="general-style1">
<?php
if(mysql_num_rows($result)!=0)
{
?>
<ul>
<li id="0" class="root"><span>Categories</span>
<?php createTree($arrayCategories, 0); ?>
</li>
</ul>
<?php
}
?>
</div>
</body>
</html>
Любая помощь приветствуется!
2 ответа
Я думаю, что действительно стоит взглянуть на этот подход только css для разборных представлений дерева: http://www.thecssninja.com/css/css-tree-menu С помощью нескольких модификаций его можно использовать для любого вида дерева что вы можете использовать.
Здесь вы можете найти рабочий раскладной древовидный список, созданный с помощью php и jQuery.
Это работает как шарм (за исключением того, что мне нужно сделать предварительно свернутый treeView.. но, может быть, вам это не нужно, и в этом случае это должно решить вашу проблему)
Как сделать предварительно свернутый TreeView с помощью php/javascript