这是我的问题:我想做的是从一个 mysql 表中获取结果并将它们变成一个菜单和一个下拉菜单
这是一个简单的例子: 如果您在我的 mysql 表中看到我有 page_name 和 parent,那么示例是: page_name,如果我有第 1 行,page_name 是“Home”,现在它的父级是“none”,但在 ID 号 39 上,page_name 是“Contact Us”,父级是“Far Far Away 123”,所以如果父级等于'none' 然后它会显示在菜单的顶部而不是下拉菜单,如果它有一个父项,它将显示在该父项下,如下所示:
Home | the ben page | The Brock Page | Far Far Away 123 | dsfk
Contact Us
你看到“联系我们”在“远方”下,因为 parent 远在远方 123
这是我正在尝试但由于某种原因无法正常工作的代码:
<ul>
<?php
$sql = "SELECT * FROM pages ORDER by item_order";
$result = mysqli_query($db, $sql);
confirm_query($result);
while ($links = mysqli_fetch_assoc($result)) {
if($links['parent'] !== "none") {
?>
<li id = "<?php echo $links['id']; ?>"><a href="
<?php
echo "page.php?id=" . $links['id'] . "\" title=\"" . $links['page_title'] . "\"";
?>>
<?php
echo $links['page_name'];
?>
</a>
<?php
if($links['parent'] !== "none") {
$child = "";
$sql = "SELECT * FROM pages";
$result = mysqli_query($db, $sql);
while($row = mysqli_fetch_assoc($result)) {
if($row['parent'] !== "none") {
$child = $row['page_name'];
}
}
echo "<ul id=\"sub_menu\" class=\"sub_navagation" . $links['id'] . "\">";
echo "<li>";
echo $child;
echo "<li>";
echo "</ul>";
}
?>
</li>
<?php
}
}
?>
</ul>
CSS:
#sub_menu {
display: none;
}
#sub_menu:hover {
display: block;
}
好的,如果如您所见,我在 MYSQL 表中有父行并且 ID 号为 39,我希望“Far Far Away123”成为“联系我们”的父行,并且我想在将鼠标悬停在“Far”上时显示它远方123'
最佳答案
我的建议是构建一个包含所有结果的数组。然后运行该数组(而不是多个数据库查询)。
我添加了一个函数 build_dropdown()
,它将获取页面名称并遍历页面数组以查看是否有任何元素具有父级匹配项。如果是这样,我们制作这些元素的数组并遍历它们以构建下拉菜单。如果不是,它什么也不做,并移至下一个菜单项。
<?php
function build_dropdown ($parent, $pages){
foreach($pages as $page){
if($page['parent'] == $parent){
$items = $page;
} // END if
} // END foreach
if(is_array($items)){ // If a sub
echo '<ul id="sub_menu" class="sub_navagation'. $item['id'] .'">';
foreach($items as $item){
echo '<li>'.$item['name'].'<li>';
} // END foreach
echo '</ul>';
} // END if
}
$sql = "SELECT * FROM pages ORDER by item_order";
$result = mysqli_query($db, $sql);
confirm_query($result);
while ($row = mysqli_fetch_assoc($result)) {
$pages[] = $row; // Add each row to $pages array to use later
}
foreach($pages as $key => $page){
if($page['parent'] == 'none'){ ?>
<li id = "<?php echo $page['id']; ?>">
<a href="page.php?id=<?php echo $page['id']; ?>" title="<?php echo $page['page_title']; ?>">
<?php echo $page['page_name']; ?>
</a>
<?php
build_dropdown($page['page_name'], $pages); // If there are child items then build them out
?>
</li>
<?php
} // END if
} // END foreach
?>
关于php - 我如何将 Mysqli 表结果转换为带有下拉菜单的菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33795421/