我正在php中使用双while循环,以分组方式显示mysql数据库的结果。这是我的数据库结构的一个示例:
id姓名团队所在国家
1汉密尔顿梅赛德斯英国
双按钮迈凯轮英国
3阿隆索迈凯轮es
4佩雷斯迈凯轮mx
我希望它像这样分组显示:
ES
Alonso
MX
Perez
UK
Button
Hamilton
但是,我的嵌套循环没有比这更好的了:
ES
Alonso
MX
Alonso
Perez
UK
Alonso
Perez
Button
Hamilton
我的循环在某个地方失败了,或者我只是采取了错误的方法。我尝试了增量、未嵌套循环、重置变量、继续/中断,但我想不通。第一个循环是为每个分组打印一个表结构。这是我的代码示例:
<?php
// count unique country entries
$categories = $db->query("
SELECT DISTINCT country
FROM cms_drivers
WHERE team = '$team'
ORDER BY country
");
while ($cat = $db->fetch_array($categories)) { // loops 3 times
$custom = $db->query("
SELECT id, name, team, country
FROM cms_drivers
WHERE team = '$team' AND country = '$cat[country]'
ORDER BY name
");
while ($content = $db->fetch_array($custom)) {
process('$drivers_bits .= "' . fetch_template('cms_drivers_bits') . '";');
}
process('$drivers .= "' . fetch_template('cms_drivers') . '";');
}
是我忽略了一些非常简单的事情,还是这只是一个错误的方法?
cms\u驱动程序\u bits模板:
<tr><td>$content[name]</td></tr>
cms\U驱动程序模板:
<table cellpadding="8" cellspacing="0" width="100%">
<thead>
<tr>
<td class="header">
<span><strong>$cat[country]</strong></span></td>
</tr>
</thead>
<tbody>
$drivers_bits
</tbody>
</table>
1条答案
按热度按时间k5ifujac1#
根据你得到的结果,看起来你只需要初始化一下
$drivers_bits
在内部循环之前添加一个空字符串。