0

そのようなものを動的に取得しようとしています

<ul>
<li><a href="index.php">Home</a></li>
<li><a href="about.php">About Us</a></li>
<li><a href="#">Academics</a>
    <ul style="overflow: hidden; display: block; height: 0px; z-index: 51; opacity: 0.00980392;">
        <li><a href="bscs.php">Bs Computer Science</a></li>
        <li><a href="dit.php">Diplomas (DIT &amp; DCHE)</a></li>
        <li><a href="mbait.php">MBAIT</a></li>
    </ul>
</li>
<li><a class=" " href="#">College</a>
</ul>

コードは

<?php 
//========================================================
$result = mysql_query("    SELECT id, parentId, name
    FROM
        menu
    ORDER BY
        parentId, name");

$menuData = array(
    'items' => array(),
    'parents' => array()
);

while ($menuItem = mysql_fetch_assoc($result))
{
    $menuData['items'][$menuItem['id']] = $menuItem;
    $menuData['parents'][$menuItem['parentId']][] = $menuItem['id'];
}

function buildMenu($parentId, $menuData)
{
    $html = '';

    if (isset($menuData['parents'][$parentId]))
    {
        $html = '<ul id="main_menu">';
        foreach ($menuData['parents'][$parentId] as $itemId)
        {
            $html .= '<li>' . $menuData['items'][$itemId]['name'];

                // find childitems recursively
                $html .= buildMenu($itemId, $menuData);

            $html .= '</li>';
        }
        $html .= '</ul>';
    }

    return $html;
}

// output the menu
echo buildMenu(0, $menuData); 
//=======================================================
 ?>

上記のコードは、メニューの最初の親要素のみを表示しており、remaing要素は表示されていません。メニューが正しく機能していません。クラスIDのzがulタグに指定されていないためです。

echo '<ul id="main_menu">';
// output the menu
echo buildMenu(0, $menuData); 
echo "</ul>";

メニューには何も表示されません

4

1 に答える 1

1

OK、これを試してください:

<?php

//========================================================
$result = mysql_query("    SELECT id, parentId, name, link
    FROM
        menu
    ORDER BY
        parentId, name");

$menuData = array(
    'items' => array(),
    'parents' => array()
);

while ($menuItem = mysql_fetch_assoc($result)) {
    $menuData['items'][$menuItem['id']] = $menuItem;
    $menuData['parents'][$menuItem['parentId']][] = $menuItem['id'];
}

function buildMenu($parentId, $menuData)
{
    $html = '';

    if (isset($menuData['parents'][$parentId]) && count( $menuData['parents'][$parentId] ) > 0 ) {
       if( $parentId == "0" ){
          $html = '<ul id="main_menu">';
        }else{
          $html = '<ul id="sub_menu">';
        }
        foreach ($menuData['parents'][$parentId] as $itemId) {
            $html .= '<li>';
            $html .= strlen($menuData['items'][$itemId]['link']) > 2?
                     '<a href="'.$menuData['items'][$itemId]['link'].'">'.$menuData['items'][$itemId]['name'].'</a>':
                     $menuData['items'][$itemId]['name'];
            $html .= buildMenu($itemId, $menuData);
            $html .= "</li>";
        }
        $html .= '</ul>';
    } else {

        $html .= '<li>' . $menuData['items'][$parentId]['name'].'</li>';
    }

    return $html;
}

// output the menu
echo buildMenu(0, $menuData);
//=======================================================

?>
于 2012-12-01T20:29:49.987 に答える