0

抱歉,如果我的标题被取消了,我不确定我正在尝试做的技术术语是什么。话虽如此,我想做的是构建一个从 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 帮助我学到了很多东西。我希望有一天能够尽快回馈社区。)

4

1 回答 1

0

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

一些伪代码:

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

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

于 2012-08-05T17:35:08.623 回答