循环嵌套菜单

I have a table for a menu like below (see the HTML section):

http://jsfiddle.net/6YZzb/

I want to convert the data to a looping nested menu. I want it to be like:

http://jsfiddle.net/aRSsZ/

This outputs it as HTML:

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

and the relevant PHP code:

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();

​ But the result is I get additional sub menu items on every menu item.

How can I fix my code?

It seems that you might always be appending to $renderProductMenuItemLv2 when you actually need to reset the string with every iteration of the outer loop. Maybe all you need is a

$renderProductMenuItemLv2 = '';

above the line if($result2 = $mysqli->query("SELECT * FROM page ... ?