2012-10-15 41 views
2

我在php和mysql中工作,我有一個表類別,我需要在父類別下顯示子類別。像在使用mysql的結構中顯示類別和子類別php

CAT1

-> Subcat1 

     -> Subcat11 

    -> Subcat2 

     --> Subcat21 

       --> Subcat211 

CAT2

-> Subcat2 

     -> Subcat21 

       -->Subcat22 
    -> Subcat3 

     --> Subcat31 

       --> Subcat311 

我的表結構是這樣的:

CREATE TABLE IF NOT EXISTS `category` (
    `cat_id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT 'This is primary key of the table', 
    `name` varchar(255) DEFAULT NULL, 
    `parent_cat_id` bigint(11) NOT NULL, 
    PRIMARY KEY (`cat_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ; 

可以請你幫我,怎麼能執行我的查詢。

+0

你有沒有檢查過的答案嗎? – Codesen

回答

0

你需要寫一個遞歸函數來顯示類別&子貓

getAllSubCats(0); 

function getAllSubCats($cat, $depth = NULL) 
{ 
    $this_cat = mysql_fetch_object(mysql_query("select * from categories where id= '$cat'")); 

    $indent = str_repeat("  ", $depth); 
    echo $indent . $this_cat->name . "<br />"; 

    $result = mysql_query("select * from categories where parent_cat_id = '$cat'"); 

    while($cat = mysql_fetch_object($result)) 
    { 
     getAllSubCats($cat->id, $depth + 1); 
    } 
} 

或者使用下面的查詢。如果它是一個2一個關係

SELECT cat_id, name, (SELECT name FROM categories WHERE cat_id = a.parent_id) parent_name FROM categories a 
0

使用自連接

SELECT p.cat_id, p.name, c.cat_id, c.name 
FROM tbl_category p 
INNER JOIN tbl_category c ON p.cat_id = c.parent_cat_id 

然後操作結果坦陣列PHP以表格形式顯示

1

例如:

​​