2012-08-11 103 views
1

我有一個表像下面的菜單(見HTML部分):循環嵌套菜單

http://jsfiddle.net/6YZzb/

我想將數據轉換爲一個循環嵌套菜單。我想這是這樣的:

http://jsfiddle.net/aRSsZ/

此將其作爲HTML:

<ul> 
    <?php echo $renderProductMenuItemLv1; ?> 
</ul>​ 

及相關PHP代碼:

if($result = $mysqli->query("SELECT * FROM myTable WHERE type='Business_Line_Product_Level_1' AND parent='37' ORDER BY order_id ASC")) 
{ 
    while($row = $result->fetch_array()) 
    { 
     $productLv1Title = $row["title"]; 
     $productLv1Body = $row["body"]; 
     $productLv1OriId = $row["id"]; 

     if($result2 = $mysqli->query("SELECT * FROM page WHERE type='Business_Line_Product_Level_2' AND parent='$productLv1OriId' ORDER BY order_id ASC")) 
     { 
      while($row = $result2->fetch_array()) 
      {   
       $productLv2Title = $row["title"]; 
       $productLv2Body = $row["body"]; 
       $productLv2OriId = $row["id"]; 

       $renderProductMenuItemLv2 .= ' 
       <li> 
        <a href="businessLineProductLv2.php?p='. $productLv2Id .'"> 
         '. $productLv2Title .' 
        </a> 
       </li> 
       '; 
      } // eof while row 
     } // eof if result 

     $renderProductMenuItemLv1 .= ' 
     <li> 
      <a href="businessLineProductLv1.php?p='. $productLv1Id .'"> 
       '. $productLv1Title .' 
      </a> 
      <ul> 
       '. $renderProductMenuItemLv2 .' 
      </ul> 
     </li> 
     '; 
    } // eof while row 
} // eof if result 
$result->free_result(); 

但結果是我得到的每個菜單項上的附加子菜單項。

我該如何修復我的代碼?

+0

您能提供意想不到的結果嗎? – ghbarratt 2012-08-11 05:31:29

+0

感謝您的編輯和回覆。結果是:http://jsfiddle.net/MeEax/。每個菜單項的子菜單項數量不斷增加 – Bayu 2012-08-11 05:40:07

回答

0

當您實際上需要在外循環的每次迭代中重置字符串時,您似乎總是可以追加到$renderProductMenuItemLv2。也許你需要的是一個

$renderProductMenuItemLv2 = ''; 

上面的線if($result2 = $mysqli->query("SELECT * FROM page ...

+0

謝謝!解決方案非常簡單:D – Bayu 2012-08-11 05:51:30

+1

有時您只需要第二雙眼睛。樂意效勞。 – ghbarratt 2012-08-11 05:52:38