【问题标题】:Creating a dynamic menu with mysql that child elements使用 mysql 创建子元素的动态菜单
【发布时间】:2012-08-05 17:17:50
【问题描述】:

对不起,如果我的标题被取消了,我不确定我正在尝试做的技术术语是什么。话虽如此,我想做的是构建一个从 mysql 查询填充的手风琴式菜单。菜单的第一部分将包含一个团队名称列表,该列表来自一个选择所有团队名称并构建菜单的查询:

$result = mysql_query("SELECT * FROM SportsByTeam");


<ul class='nav nav-list'>
<?php
while($row = mysql_fetch_array($result))
  {
?>
<li>
<a href="<? echo $row['seo_team']?>"> <?php echo $row['team'] ?> </a>
</li>
<?php
} ?>

这非常适合我正在尝试构建的顶级菜单。我完全坚持的是现在如何合并菜单的手风琴(底层)。我想要发生的是当有人点击上面查询生成的球队时,属于该球队的球员列表将下拉。需要明确的是,我不是在问如何从 html/css 的角度创建手风琴菜单,而是在问如何基于 mysql 查询创建动态手风琴菜单。我为这部分提出的查询是:

SELECT PlayerByTeam.team_name AS TeamName, SportsByTeam.seo_team, PlayerByTeam.first_name, PlayerByTeam.last_name

FROM PlayerByTeam

inner join SportsByTeam ON PlayerByTeam.team_name = SportsByTeam.team

但这是我能做到的。如何将两个查询的结果合并到一个动态菜单中?看起来像:

<ul>
<li> Team Name 1 </li>
<ul>
<li> Player Name 1 </li>
<li> Player Name 2 </li>
</ul>
<li> Team Name 2 </li>
..etc
</ul>

(非常感谢您的所有帮助。SO 帮助我学到了很多东西。我希望有一天能够尽快回馈社区。)

【问题讨论】:

标签: php mysql html


【解决方案1】:

您可以选择所有玩家并按他们的团队对他们进行排序。然后每次团队名称更改时,都需要完成一个新元素。

一些伪代码:

while($row = get_row()) {
    if (team_has_changed($row)) {
        if (there_was_a_previous_team()) {
            end_previous_team();
        }
        start_new_team();
    }
    process_team_member($row);
}    
if (there_was_a_previous_team()) {
    end_previous_team();
}

我在之前的一些答案中概述了这个带有 while 循环的非常有表现力的代码,你可以在这里找到它:https://stackoverflow.com/a/11616884/367456

然后您可以将这种分组包装到一些迭代器组件中,以便您进行一些简单的使用(您应该在此处使用 Mysqli 或 PDO,因为它们具有可以迭代的结果)。我在之前的答案中证明了这一点,该答案已经有一些代码示例:https://stackoverflow.com/a/11619281/367456

它通过为每个级别提供一个迭代器来简化问题,而一开始您只需查询数据库并从中获得一个结果。

【讨论】:

    猜你喜欢
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多