我对目前的PHP知识感到困惑。我想创建一个菜单,将信息存储到数据库中。我想要实现的目标如下:
<?php
$names= array();
$aliases= array();
$items = array();
?>
<?php while($row = mysqli_fetch_array($menu, MYSQLI_ASSOC)){
$names[] = $row['page'];
$aliases[] = $row['alias'];
$items[] = $row['item'];
}?>
<div id="menu">
<ul>
<?php foreach($names as $page_name){
<a href="*** HERE THE ALIAS CORRESPONDING WITH THE NAME***"><?php echo $page_name;?></a>
?>
*** IF THERE ARE SUB MENU ITEMS, SHOW THEM ***
<ul>
<li>
<a href="*** ALIAS OF SUB ITEM ****">*** NAME OF SUB ITEM***</a>
</li>
</ul>
</ul>
</div>
我完全不知道我是否在合适的垫子上。 foreach仅适用于名称或别名,但我希望将它们组合起来。然后我想检查是否有悬停的子菜单,还要在类“活动”上设置父项。
由于我很难用英语解释,请问我需要的任何问题,以便提供更多信息。
提前致谢!
答案 0 :(得分:1)
你太复杂了:
<?php
echo '<div id="menu">
<ul>';
while($row = mysqli_fetch_array($menu, MYSQLI_ASSOC)){
$names[] = $row['page'];
$aliases[] = $row['alias'];
$items[] = $row['item'];
echo '<li class="pagename"><a href="'.$row['alias'].'">'.$row['page'].'</a>';
if ('checkforsubitem') {
echo '<ul>
<li>
<a href="'.$row['alias_subitem'].'">'.$row['name_of_subitem'].'</a>
</li>
</ul>';
}
}
echo '</li>
</ul>
</div>';
?>
然而,这假设有关子菜单的一些事情。通常情况下,您可以在同一查询中获取这些项目,并通过$row
将它们提供给您,但您也可以根据$row['id']
或其他内容的连接对这些项目进行单独查询,并拉出与该ID对应的子项,并在辅助while
项周围运行另一个<li>
循环。
答案 1 :(得分:1)
首先,您不需要三个不同的阵列,只有$names
阵列就足够了。其次,按以下方式更改while()
循环,
while($row = mysqli_fetch_array($menu, MYSQLI_ASSOC)){
$names[] = array('page_name' => $row['page'], 'alias' => $row['alias'], 'item' => $row['item']);
}
这将创建一个包含名称,别名和子项的多维数组。
最后,按以下方式显示整个菜单,
<div id="menu">
<ul>
<?php foreach($names as $page_array){ ?>
<a href="<?php echo $page_array['alias']; ?>"><?php echo $page_array['page_name']; ?></a>
<?php
if(!empty($page_array['item'])){
?>
<ul>
<li>
<a href="<?php echo $page_array['item']; ?>"><?php echo $page_array['item']; ?></a>
</li>
</ul>
<?php
}
} ?>
</ul>
</div>