2012-08-11 73 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