我是Php的初学者。我开发了我的第一个动态网站 - > http://www.afrogfx.com 如果你看看我的侧边栏,你会看到类别列出我的问题,如果我创建这样的子子类别
CAT A
- SUB CAT A-1
- SUB CAT A-2
-- SUB CAT A-3 ( problem Here )
CAT B
- SUB CAT B-1
- SUB CAT B-2
- SUB CAT B-2-a
-- SUB CAT B-2-b ( problem Here )
--- SUB CAT B-3 ( problem Here )
类别列表代码
<?php
mysql_select_db($db_name, $conn); // Change for your database
$query_Recordset1 = "SELECT catid,catname,parentid FROM categories ";
$Recordset1 = mysql_query($query_Recordset1, $conn) or die(mysql_error()); // Change for your database
while ( $row = mysql_fetch_assoc($Recordset1) )
{
$menu_array[$row['catid']] = array('catname' => $row['catname'],'catid' => $row['catid'],'parentid' => $row['parentid']);
}
//recursive function that prints categories as a nested html unordered list
function generate_menu($parent)
{
$has_childs = false;
//this prevents printing 'ul' if we don't have subcategories for this category
global $menu_array;
//use global array variable instead of a local variable to lower stack memory requierment
foreach($menu_array as $key => $value)
{
if ($value['parentid'] == $parent)
{
//if this is the first child print '<ul>'
if ($has_childs === false)
{
//don't print '<ul>' multiple times
$has_childs = true;
//echo '<ul>';
echo '<ul id="categories">';
}
echo '<li><a href="categories?catid=' . $value['catid'] . '&parentid=' . $value['parentid'] . '&catname=' . $value['catname'] .'">' . $value['catname'] . '</a>';
echo '<input type="hidden" value="' . $value['catname'] . '" />';
generate_menu($key);
//call function again to generate nested list for subcategories belonging to this category
echo '</li>';
}
}
if ($has_childs === true) echo '</ul>';
}
//generate menu starting with parent categories (that have a 0 parent)
?>
现在我需要功能选择主要类别中的所有主题,当我选择它和子类别为&amp;子子类!!我该怎么做 ?? !!
答案 0 :(得分:0)
我将此代码用于带子菜单的菜单
这是函数
// Menu builder function, parentId 0 is the root
function buildMenu($parent, $menu) {
$html = "";
if (isset($menu['parents'][$parent]))
{
$html .= "
<ul>\n";
foreach ($menu['parents'][$parent] as $itemId)
{
if(!isset($menu['parents'][$itemId]))
{
$html .= "<li>\n <a href='".$menu['items'][$itemId]['link']."'>".$menu['items'][$itemId]['label']."</a>\n</li> \n";
}
if(isset($menu['parents'][$itemId]))
{
$html .= "
<li><span>" . $menu['items'][$itemId]['label'] . "<b></b></span>" ;
$html .= buildMenu($itemId, $menu);
$html .= "</li> \n";
}
}
$html .= "</ul> \n";
}
return $html;
}
这是在电话中
// Select all entries from the menu table
$sql = "SELECT id, label, link, parent FROM dbo.Menu ORDER BY parent, sort, label";
$result = $database->query($sql);
$menu = array(
'items' => array(),
'parents' => array()
);
// Builds the array lists with data from the menu table
while ($items = sqlsrv_fetch_array( $result )) {
// Creates entry into items array with current menu item id ie. $menu['items'][1]
$menu['items'][$items['id']] = $items;
// Creates entry into parents array. Parents array contains a list of all items with children
$menu['parents'][$items['parent']][] = $items['id'];
}
我的数据库中有一个带有
列的SQL表如果你把你所有的顶级菜单项都作为父0,那么你希望成为父母下的子菜单的每个项目都放在父id中