Php 数据放入下拉列表
我想从MySQL获取数据并将其插入我的导航栏。我的问题是,一些数据必须放在下拉列表下,但它会创建一个新的主列表项 这是现在的屏幕截图,但我希望在下拉菜单中插入Php 数据放入下拉列表,php,html,css,mysql,Php,Html,Css,Mysql,我想从MySQL获取数据并将其插入我的导航栏。我的问题是,一些数据必须放在下拉列表下,但它会创建一个新的主列表项 这是现在的屏幕截图,但我希望在下拉菜单中插入面板列 我的数据库结构: 我认为您遇到的问题是,您将子菜单视为与主导航栏项目相同的内容。下面是一个可能的解决方案,我已经做了一些重格式重构,尝试将逻辑部分放在顶部,以便解决方案更加清晰。我倾向于同意前面的评论者(@Scott)的观点,即从长远来看,创建表的父子关系将是更易于维护的实践 <?php // Make quer
面板
列
我的数据库结构:
我认为您遇到的问题是,您将子菜单视为与主导航栏项目相同的内容。下面是一个可能的解决方案,我已经做了一些重格式重构,尝试将逻辑部分放在顶部,以便解决方案更加清晰。我倾向于同意前面的评论者(@Scott)的观点,即从长远来看,创建表的父子关系将是更易于维护的实践
<?php
// Make query
$query = $connect->prepare("SELECT * FROM `ucp_navbar` WHERE `Kategorie` = 0");
$query->execute();
// Setup containers for list items
$nav = array();
$dropdown = array();
// Iterate query
while ($row = $query->fetch()) {
// Assign built list item to either navbar or dropdown arrays
switch ($row['Panel']) {
case 0:
$nav[] = buildListItem(
htmlentities($row['Link']),
htmlentities($row['Icon']),
echo htmlentities($row["Name"]),
true
);
break;
case 1:
$dropdown[] = buildListItem(
htmlentities($row['Link']),
htmlentities($row['Icon']),
echo htmlentities($row["Name"])
);
}
}
// Add dropdowns to main nav and convert array of nav items to string.
$nav[] = buildDropdown($dropdowns);
$navbar = implode("", $nav);
/**
* Builds an individual list item.
*
* @param string $link URL to use for href
* @param string $icon font-awesome icon to use
* @param string $name display name for navbar
* @param bool $active adds nav-active class when true
*
* @return string formatted single list item
*/
function buildListItem($link, $icon, $name, $active = false)
{
$class = ($active) ? ' class="active nav-active"': ""
return "<li{$class}><a href=\"{$link}\"><i class=\"fa fa-{$icon}\" aria-hidden=\"true\"></i>{$name}</a></li>";
}
/**
* Construct dropdown list item.
*
* @param array $dropdowns group of dropdown list items
*
* @return string formatted dropdown list for navbar
*/
function buildDropdown($dropdowns)
{
$list = implode("", $dropdowns);
return <<<EOT
<li class='dropdown'>
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
<i class='fa fa-user' aria-hidden='true'></i>
Account<span class="caret"></span>
</a>
<ul class="dropdown-menu">
$list
</ul>
</li>
EOT;
}
?>
<div class='collapse navbar-collapse' id='bs-example-navbar-collapse-1'>
<ul class='nav navbar-nav'>
<?php echo $navbar; ?>
</ul>
也许我遗漏了什么,但你怎么知道应该放在哪个下拉列表下?如果Panel==1,那么它是否在所有下拉列表下?根据第一张图片,您有两个下拉列表,称为Account。DB结构没有指明哪些是下拉列表。大多数时候,当你这样做的时候,你应该有一个父子关系在那里,而不是面板,可能应该是这个链接显示的“父”的id,如果它是0,那么它就不是一个下拉列表。感谢的家伙,我测试了它,它工作了!非常感谢,现在我知道如何处理动态下拉列表:)
<?php
// Make query
$query = $connect->prepare("SELECT * FROM `ucp_navbar` WHERE `Kategorie` = 0");
$query->execute();
// Setup containers for list items
$nav = array();
$dropdown = array();
// Iterate query
while ($row = $query->fetch()) {
// Assign built list item to either navbar or dropdown arrays
switch ($row['Panel']) {
case 0:
$nav[] = buildListItem(
htmlentities($row['Link']),
htmlentities($row['Icon']),
echo htmlentities($row["Name"]),
true
);
break;
case 1:
$dropdown[] = buildListItem(
htmlentities($row['Link']),
htmlentities($row['Icon']),
echo htmlentities($row["Name"])
);
}
}
// Add dropdowns to main nav and convert array of nav items to string.
$nav[] = buildDropdown($dropdowns);
$navbar = implode("", $nav);
/**
* Builds an individual list item.
*
* @param string $link URL to use for href
* @param string $icon font-awesome icon to use
* @param string $name display name for navbar
* @param bool $active adds nav-active class when true
*
* @return string formatted single list item
*/
function buildListItem($link, $icon, $name, $active = false)
{
$class = ($active) ? ' class="active nav-active"': ""
return "<li{$class}><a href=\"{$link}\"><i class=\"fa fa-{$icon}\" aria-hidden=\"true\"></i>{$name}</a></li>";
}
/**
* Construct dropdown list item.
*
* @param array $dropdowns group of dropdown list items
*
* @return string formatted dropdown list for navbar
*/
function buildDropdown($dropdowns)
{
$list = implode("", $dropdowns);
return <<<EOT
<li class='dropdown'>
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
<i class='fa fa-user' aria-hidden='true'></i>
Account<span class="caret"></span>
</a>
<ul class="dropdown-menu">
$list
</ul>
</li>
EOT;
}
?>
<div class='collapse navbar-collapse' id='bs-example-navbar-collapse-1'>
<ul class='nav navbar-nav'>
<?php echo $navbar; ?>
</ul>