我的代码中的子类别有些麻烦。
我的期望:
面包店 罐头食品 乳制品 肉 子类别 子类别 … 子类别 糖果和零食 子类别 子类别 … 子类别
MYSQL表架构:
分类:
id类别名称url类型
$res = mysql_query("SELECT `id`, `name`, `url` FROM `categories` WHERE `type`='category' ORDER BY `name` ASC") or die(mysql_error()); while ($arr = mysql_fetch_array($res)) { $faq_categ[$arr['id']]['title'] = $arr['name']; $faq_categ[$arr['id']]['url'] = $arr['url']; } $res = mysql_query("SELECT `id`, `name`, `category`, `url` FROM `categories` WHERE `type`='subcategory' ORDER BY `name` ASC") or die(mysql_error()); while ($arr = mysql_fetch_array($res)) { $faq_categ[$arr['category']]['items'][$arr['id']]['name'] = $arr['name']; $faq_categ[$arr['category']]['items'][$arr['id']]['url'] = $arr['url']; } if (isset($faq_categ)) { foreach ($faq_categ as $id => $temp) { $textbuilder .= '<li><a href="/products/'.$faq_categ[$id]['url'].'/all" title="">'.$faq_categ[$id]['title'].'</a>'; if (array_key_exists("items", $faq_categ[$id])) { foreach ($faq_categ[$id]['items'] as $id2 => $temp) { $textbuilder .= '<small><a href="/products/'.$faq_categ[$id]['url'].'/'.$faq_categ[$id]['items'][$id2]['url'].'" title="">٠'.$faq_categ[$id]['items'][$id2]['name'].'</a></small>'; } } $textbuilder .= '</li>'; } }
结果:http : //www.picupload.us/images/454result.png
谢谢您的时间,福克斯·桑克(Fox Sank)
编辑:
这是桌子
CREATE TABLE IF NOT EXISTS `categories` ( `id` int(10) NOT NULL auto_increment, `category` int(10) default NULL, `name` varchar(255) NOT NULL, `url` varchar(255) NOT NULL, `type` varchar(255) default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=17 ; INSERT INTO `categories` (`id`, `category`, `name`, `url`, `type`) VALUES (1, 1, 'Bakery', 'brakery', 'category'), (2, 2, 'Dairy Products', 'dairy-products', 'category'), (3, 3, 'Sweets and Snacks', 'sweets-and-snacks', 'category'), (4, 3, 'Corn puffs', 'corn-puffs', 'subcategory'), (5, 3, 'Biscuits', 'biscuits', 'subcategory'), (6, 3, 'Cakes', 'cakes', 'subcategory'), (7, 3, 'Pretzels', 'pretzels', 'subcategory'), (8, 4, 'Canned food', 'canned-food', 'category'), (9, 5, 'Meat', 'meat', 'category'), (10, 5, 'Salami', 'salami', 'subcategory'), (11, 5, 'Sausages', 'sausages', 'subcategory'), (12, 5, 'Ham', 'ham', 'subcategory'), (13, 5, 'Delicatessen', 'delicatessen', 'subcategory'), (14, 5, 'Frankfurters', 'frankfurters', 'subcategory'), (15, 5, 'Polony', 'polony', 'subcategory'), (16, 5, 'Smoked', 'smoked', 'subcategory'), (17, 5, 'Pate', 'pate', 'subcategory');
我尝试这段代码,它的工作原理..您将尝试一下…
CREATE TABLE IF NOT EXISTS `categorylist` ( `id` int(5) NOT NULL auto_increment, `cname` varchar(25) collate utf8_unicode_ci default NULL, `pid` int(5) NOT NULL, PRIMARY KEY (`id`), KEY `pid` (`pid`) ) ; INSERT INTO `categorylist` (`id`, `cname`, `pid`) VALUES (1, 'Entertainment', 0), (2, 'movies', 1), (3, 'actor', 2), (4, 'actress', 2), (5, 'Drama', 1), (7, 'sports', 0), (8, 'comedian', 2), (9, 'political', 0); <?php include "header.php"; include "dbconn.php"; $qry="SELECT * FROM categorylist"; $result=mysql_query($qry); $arrayCategories = array(); while($row = mysql_fetch_assoc($result)){ $arrayCategories[$row['id']] = array("pid" => $row['pid'], "name" => $row['cname']); } //createTree($arrayCategories, 0); function createTree($array, $currentParent, $currLevel = 0, $prevLevel = -1) { foreach ($array as $categoryId => $category) { if ($currentParent == $category['pid']) { 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>