2012-04-18 58 views
0

我有我的代碼中的子類別的麻煩。分類與子PHP/MYSQL

我的期望:

  • 麪包店
    • 罐頭食品
    • 乳製品
    • 肉類
      • 子類別
      • 子類別
      • ...
      • 子類別
    • 糖果零食
      • 子類別
      • 子類別
      • ...
      • 子類別

MySQL表架構:

分類:

ID 類別 名 網址 型

$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

感謝您的時間, 福克斯小號ANK

編輯:

下面是表

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'); 
+0

您可以添加您的類別表數據的轉儲? – Leven 2012-04-18 19:09:12

+0

@Leven我編輯了我的第一篇文章。謝謝 – 2012-04-18 19:15:00

+0

沒有人? ...... – 2012-04-19 15:43:26

回答

2

我試試這個代碼,它的作品.. 你會嘗試這個...

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> 
1

你的數據是錯誤的:

(9, 5, 'Meat', 'meat', 'category'), 

應該是:

(9, 9, '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'); 

應該是:

(10, 9, 'Salami', 'salami', 'subcategory'), 
(11, 9, 'Sausages', 'sausages', 'subcategory'), 
(12, 9, 'Ham', 'ham', 'subcategory'), 
(13, 9, 'Delicatessen', 'delicatessen', 'subcategory'), 
(14, 9, 'Frankfurters', 'frankfurters', 'subcategory'), 
(15, 9, 'Polony', 'polony', 'subcategory'), 
(16, 9, 'Smoked', 'smoked', 'subcategory'), 
(17, 9, 'Pate', 'pate', 'subcategory');