循环嵌套菜单

时间:2012-08-11 05:25:23

标签: php mysql arrays menu nested-loops

我有一个表格,如下面的菜单(参见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();

但结果是我在每个菜单项上获得了额外的子菜单项。

如何修复我的代码?

1 个答案:

答案 0 :(得分:0)

当您需要在外部循环的每次迭代中重置字符串时,似乎总是可以附加到$renderProductMenuItemLv2。也许你需要的只是一个

$renderProductMenuItemLv2 = '';

if($result2 = $mysqli->query("SELECT * FROM page ...

之上