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

しかし、結果として、すべてのメニュー項目に追加のサブメニュー項目が表示されます。

コードを修正するにはどうすればよいですか?

4

1 に答える 1

0

$renderProductMenuItemLv2外側のループの反復ごとに文字列を実際にリセットする必要がある場合は、常に追加しているようです。多分あなたが必要とするのは

$renderProductMenuItemLv2 = '';

ラインの上if($result2 = $mysqli->query("SELECT * FROM page ...

于 2012-08-11T05:46:45.497 に答える