来自mysql PHP的动态菜单

时间:2011-03-15 01:01:49

标签: php arrays menu

嘿大家,我被阵列困住了。我试图从我的sql做一个菜单,但我一直都在失败。

这是回复:

Id - 3 , Name - Axle, con - 7, Desc - thin
Id - 4 , Name - Axle, con - 7, Desc - flat
Id - 5 , Name - Ball, con - 8, Desc - round
Id - 6 , Name - Ball, con - 8, Desc - hard

基本上,它是一个连接,并通过con和partId连接,同一个con具有相同的名称。

所有人都希望它能做到这一点:

<ul>

<li>Axle

          <li>thin</li>
          <li>flat</li>
</li>

<li>Ball

         <li>round</li>
         <li>hard</li>

</li>
</ul>

我尝试了这一点,却一无所获 http://www.phpro.org/tutorials/Simple-Mysql-PHP-Menu.html#1

有人可以指导我朝正确的方向发展吗? 谢谢

UPDATE //////////

好的感谢回复,但我仍然无法工作。 我不能摆脱双轴。

2 个答案:

答案 0 :(得分:1)

首先,我会为导航声明一个空数组。

$part_array = array();

首先,我将遍历数组并根据部件名称组合项目。

$counter = 0;
foreach($mysql_result_array as $part) {
   $part_array[$part['ID'] = $part['ID'];
   $part_array[$part['ID']['Name'] = $part['Name'];
   $part_array[$part['ID']['parts'] = $part;
   $counter++;
}

现在,您已将所有部件分开,但包含在阵列的相同ID中。从这里开始,我将循环遍历$ part_array的每个部分,并将该ID中的每个部分作为自己的列表项进行回显。

    foreach($part_array as $list_item) {
        echo '<ul id="<?=$part_item['ID']?>">';
        echo '<li id="'.$list_item['Name'].'">'.$list_item['Name'];
        echo '<ul id="'.$list_item['Name'].'_sub">';
        foreach($list_item['parts'] as $list_item_part) {
            echo '<li id="'.$list_item['Name'].'_.'.$list_item['Desc'].'"><a href="/part.php?id='.$list_item['conn'].'">'.$list_item['Desc'].'</a>';
        }
    }

它可能不是最有效或最优雅的,但希望它能给你这个想法。

答案 1 :(得分:0)

最好迭代结果列表并将主菜单条目与次要标题分开:

foreach ($results as $row) {
    extract($row);   // take care that $row entries can't overwrite vars
    $main[$Id] = $Name;
    $sub[$Id][] = $Desc;
}

然后遍历$ main列表,每个条目也遍历$ sub列表:

foreach ($main as $Id => $Name) {
    print "<li>$Name";
    print "<ul>";
    foreach ($sub[$Id] as $Desc) {
        print "<li>$Desc";
    }
    print "</ul></li>";
}

如果你有一个嵌套列表(你的问题没有这么说),那么你需要一个递归函数而不是简单的循环。