【发布时间】:2015-02-01 04:44:41
【问题描述】:
我正在创建一个新网站,但我正在努力解决菜单问题。一些元素(父元素:0)没有子元素,而另一些元素有 1 或 2。我正在尝试一种新方法来让事情变得更短、更安全、更容易,但我遇到了一些问题。这是我的代码:
我的问题是,在 FOR LOOP 中,我确实正确地获得了子菜单项的数量,但显然“标签”与父级相同,因为这是循环中已经存在的 ARRAY 键。这个想法的原作者http://wizardinternetsolutions.com/articles/web-programming/dynamic-multilevel-css-menu-php-mysql 用 $label+1 修复了它,但我没有重新执行 SQL 搜索。我该怎么办?
更新:这是涉及该功能的完整代码:
public function sQuery() {
$sql = "SELECT a.id, a.label, a.link, Deriv1.Count
FROM `menu` a
LEFT OUTER JOIN (SELECT parent, COUNT(*) AS Count FROM `menu` GROUP BY parent) Deriv1
ON a.id = Deriv1.parent
WHERE a.parent = :parent";
try {
$core = Core::getInstance();
$stmt = $core->dbh->prepare($sql);
$stmt->bindParam(':parent', $this->_mParent, PDO::PARAM_INT);
if ($stmt->execute()) {
$stmt->setFetchMode(PDO::FETCH_ASSOC);
while ($menuItem = $stmt->fetch()) {
echo "<li class=\"dropdown\">\r\n";
echo "<a href=\"".$menuItem['link']."\" class=\"dropdown-toggle js-activated\">".$menuItem['label']."</a>\r\n";
if ($menuItem['Count'] > 0) {
echo "<ul class=\"dropdown-menu\">\r\n";}
// THIS IS THE PART THAT DOESN'T GET ME THE CORRECT INFO
for ($i = 1; $i <= $menuItem['Count']; $i++) {
echo "<li><a href=\"".$menuItem['link']."\">".$menuItem['label']."</a></li>\r\n";
}
echo "</ul>\r\n";
}
echo "</li><!-- /.dropdown -->\r\n";
}
}
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
}
结果应该是:
- 首页
- 浏览目录
- ----- 按类别浏览
- ------ 按 ID 浏览
- 关于我们
我得到了:
- 首页
- 浏览目录
- ----- 浏览目录
- ----- 浏览目录
- 关于我们
【问题讨论】:
-
问题不清楚。请显示您的数据,显示您的 html 输出真实和预期
标签: php loops for-loop while-loop