下拉菜单数据的数组

时间:2011-10-01 05:37:45

标签: php javascript mysql html menu

根据从xml或json填充的数据创建下拉菜单有一些想法。但是我怎么能用php完全做到这一点?一种可能的方法是创建一个多级数组。但是从mysql数据创建它的最佳方法是什么(具有子菜单的父ID),以及如何有效地读取数组(通过foreach循环?)?

2 个答案:

答案 0 :(得分:1)

对于 php 方面,我们假设您使用该查询检索表格中的格式数组:

$menu = array(
   'page/1' => 'about',
   'page/2' => 'photos',
   'menu-title' =>  array('page/4' => 'sub-menu-1','page/5' => 'sub-menu-2')
);

echo '<ul>';
foreach($menu as $key => $value){
  if(is_string($value)){
     echo '<li><a href="'.$key.'">'.$value.'</a></li>';
  }
  if(is_array($value)){
    echo '<ul>';
    echo '<li><a href="#">'.key($value).'</a></li>';
    foreach($value as $sub_key => $sub_value){
      echo '<li><a href="'.$sub_key .'">'.$sub_value.'</a></li>';
    }
    echo '</ul>';
  }
}
echo '</ul>';

对于 mysql 数据库,如果它为null,则为“parent_id”列,那么它将是一个根级别,除此之外,它将是一个子目录,另一列为“path”和“标题,你也可以添加一个”重量“列来订购它们。

注意:这是未经测试的代码

答案 1 :(得分:0)

我喜欢遍历从mysql中提取的行并创建一个数组,其中键是输入的值,值是文本。所以,如果你想创建一个下拉列表,如:

<input value="UT">Utah</input>
<input value="VT">Vermont</input>
<input value="NV">Nevada</input>
<input value="CA">California</input>

我会创建一个如下所示的数组:

array(

       "UT" => "Utah",
       "VT" => "Vermont",
       "NV" => "Nevada",
       "CA" => "California",
)

使用foreach将数组转换为html非常容易。