2012-08-30 63 views
0

這是我需要顯示我的數據的方式:我用三個表PHP MySQL的存儲和顯示數據的層次結構使用閉包表

Electronics  main heading 
     Mobile  category 
     Galaxy s sub category 

:mainheading,類別和子類別。每個人都有一個外鍵。

我想知道哪些是有效的方法來顯示這種數據。我正在閱讀有關這些方法:鄰接列表,路徑枚舉,嵌套集合,閉包表。

你能否指出一個很好的例子來實現它?

加入後,這是我的表看起來像

1. Electronics mobile Galaxy s 

    $x = ""; 
    $z = ""; 
    while() 
    { 
    if($x != $mainheading) 
    { 
      $y = $row['mainheading']; 
     $x = $y; 
     } 
    if($y != $category) 
     { 
       $s = $row['category']; 
      $z = $s; 

     } 
    } 

DB結構

主標題 SNO主鍵 mainheading

類別

SNO primartkey msno foriegn鍵 類別

子項目

SNO主鍵 csno foriegn鍵 子項目

我用加入關於三個表,以形成上述

電子移動Galaxy s

HTML

 <div> Main Heading <div> </div> 
     </div> 
     <div><second opens> 
     <div><third close> 
     <h3> Category</h3> 

     <div> 
     <p>Sub item</p> </div> 
     </div><third close? 
     </div><second close> 
+0

請更具體與您的問題,並提供一些更多的信息。 –

+0

@wasim kazi:你能告訴我什麼不清楚在我的問題,以便我可以更新我的問題。 – ram

+0

從哪裏你想顯示這些數據,如果你正確的加入,這樣很容易維護這種樹。 在這個如果你使用** Adjacency列表**是一個好主意。 [檢查這裏](http://stackoverflow.com/questions/4242276/recursive-php-function-for-adjacency-list-display) –

回答

1

試試這個

while($row) 
{ 
if($x != $mainheading) 
    { 
    $y = $row['mainheading']; 
    $x = $y; 
    echo "<div>"; echo $x; echo "<div>"; 
    } 
    if($y != $category) 
    { 
     $s = $row['category']; 
     $z = $s; 
    echo "<div>"; echo $z; echo "<div>"; 
    } 

    and so on...... 
} 
+0

:子項div不應該重複,但當它有兩個數據時它會重複。只有h3標記應該重複。 – ram

+0

使用foreach循環insted of while併爲h3標記創建foreach循環。 這將解決您的問題。 –