繁体   English   中英

如何迭代php中的ul和li元素?

[英]How to iterate ul and li elements in php?

我正在用php创建动态菜单和子菜单。...不知道从哪里开始。...我已经写了所有查询,但需要建议用它的Ulli元素迭代结果集。可能不是子菜单的子菜单,可能没有菜单的子菜单.....

Menu1
  submenu1
     submenu11
     submenu12
  submenu2
     submenu21
Menu2
  submenu1
     submenu11
     submenu12

任何建议。

编辑:

这是我在做什么

<?php

      $con=mysql_connect("localhost","root","");
      $db=mysql_select_db("testt");

      echo '<ul id="nav">';
      $res=mysql_query("SELECT * FROM menu WHERE PARENT_ID=0");
      while($row=mysql_fetch_array($res))
      {
            echo '<li class="top"><a href="#" class="top_link"><span>'.$row['MENU_NAME'].'</span></a></li>';
            $res1=mysql_query("SELECT * FROM menu WHERE PARENT_ID=1 AND CHILD_ID=".$row['ID']."");
            echo '<ul class="sub">';
            while($row1=mysql_fetch_array($res1))
              {
                 echo '<li><a href="#" class="fly">'.$row1['MENU_NAME'].'</li>';
                 $res2=mysql_query("SELECT * FROM menu WHERE PARENT_ID=2 AND CHILD_ID=".$row1['ID']."");
                 echo '<ul>';
                 while($row2=mysql_fetch_array($res2))
                    {
                        echo '<li><a href="#">'.$row2['MENU_NAME'].'</li>';
                    }
                  echo '</ul>';
              }
              echo '</ul>';
      }
      echo '</ul>';





      ?>

这是我的桌子

替代文字http://img229.imageshack.us/img229/1174/84296639.jpg
My CSS Class doesn't seem to get applied

这是我的方法:

css文件:

ul.makeMenu, ul.makeMenu ul {
    background-color:#000000;
    cursor:default;
    margin:0px 0px 0px 0px;
    padding:0px 0px 0px 0px;
    width: 180px;
}
ul.makeMenu li {
    background-image:url(../images/marker_rosu.gif);
    background-position:5px center;
    background-repeat:no-repeat;
    color:#D4020B;/*#FEBF01;*/
    list-style-type:none;
    position:relative;
    margin:0px 0px 0px 0px;
    padding:0px 5px 0px 15px;
    line-height:24px;
    text-align:left;
}
ul.makeMenu li>ul {
    display:none;
    position:absolute;
    top:0px;
    left:180px;
}
ul.makeMenu li:hover {
    background-image:url(../images/marker_negru.gif);
    background-position:5px center;
    background-repeat:no-repeat;
    background-color:#D4020B;/*#FEBF01;*/
    color:#FFFFFF;
}
ul.makeMenu {
    display:block;
}
ul.makeMenu li:hover>ul {
    display:block;
}
ul.makeMenu li a {
    color:#D4020B;/*#FEBF01;*/
    display:block;
    width:100%;
    text-decoration:none;
}
ul.makeMenu li a:hover {
    color:#000000;
}
ul.makeMenu li:hover>a {
    color:#000000;
}

产品或其他任何类别表的sql文件:

CREATE TABLE `category` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `idParrent` int(10) unsigned NOT NULL,
  `name` varchar(255) NOT NULL,
  `description` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

和创建菜单的功能:

function getAFP ($id)
    {
        global $conx;
        $sql = sprintf("SELECT * FROM category WHERE idParrent = %d;", quote_smart($id));
        $rs = mysql_query($sql, $conx);
        $arrayResult = array();
        if (mysql_num_rows($rs)) {
            while ($row = mysql_fetch_array($rs)) {
                array_push($arrayResult, $row);
            }
            return $arrayResult;
        } else {
            return 0;
        }
    }

function makeListaCategory ($id)
    {
        $listaCategorii = array();
        $categorii = getAFP($id);
        if (! $categorii) {
            return 0;
        } else {
            foreach ($categorii as $categorie) {
                array_push($listaCategorii, $categorie[2] . "|" . $categorie[0]);
                $subcategorii = makeListaCategory($categorie[0]);
                if ($subcategorii) {
                    foreach ($subcategorii as $subcategorie) {
                        $valori = explode("|", $subcategorie);
                        array_push($listaCategorii, $categorie[2] . ">" . $valori[0] . "|" . $valori[1]);
                    }
                }
            }
        }
        return $listaCategorii;
    }

我希望这能帮到您!

编辑:在您澄清问题之前发布。 这是一个通用的递归菜单结构。

<?php
function print_menu($menu)
{
  echo "<ul>\n";
  foreach ($menu as $submenu)
  {
    echo "<li>\n";
    echo "<span>{$submenu['name']}</span>\n";
    if (!empty($submenu['children']))
      print_menu($submenu['children']);
    echo "</li>\n";
  }
  echo "</ul>\n";
}

print_menu(
  array(
    array(
      'name' => 'Menu 1',
      'children' => array(
        array(
          'name' => 'Submenu 11',
          'children' => array(
            array('name' => 'Submenu 111'),
            array('name' => 'Submenu 112')
          )
        ),
      )
    ),
    array(
      'name' => 'Menu 2'
    )
  )
);
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM