假设你有一张这样的桌子:
ID Cat1 Cat2
1 a red
2 b red
3 c blue
4 d blue
5 e blue
6 f green
etc etc etc
目标是显示ID和Cat1(唯一对),并根据Cat2分组。简单的方法是为每个Cat2运行一个单独的MySQL查询,但是有很多不同的Cat2值,这些值会产生数量级的查询,以便向查看器显示一个页面,而不仅仅是在一个查询中获取全部数据并用PHP将其分割开来。
我的格式已经完成了。但是我很难找出如何根据使用
$value[2]
后从$value = mysql_fetch_row($result)
中获取的数组$sql = "SELECT ID,Cat1,Cat2 FROM MyTable ORDER BY Cat2,ID"
中的第三列值限制行输出用简单的英语(显然不是真正的代码),它看起来像:
$result = mysql_query($sql);
IF ($value[2] from $value = mysql_fetch_row($result) = "red")
{
echo "Red Group";
WHILE ()
{
echo $value[0] and $value[1] for all the rows where Cat2 = red
}
}
IF ($value[2] from $value = mysql_fetch_row($result) = "blue")
{
echo "Blue Group";
WHILE ()
{
echo $value[0] and $value[1] for all the rows where Cat2 = blue
}
}
etc
所有这些都有意义吗如何从
$result
数组中获取这些组数据?显然是不都有道理的!:-)
下面是所需输出的示例:
RED GROUP
1 a
2 b
BLUE GROUP
3 c
4 d
5 e
GREEN GROUP
6 f
etc
谢谢您!
最佳答案
我不知道我是否正确理解你,但这能解决你的问题吗?
基本思想是循环遍历所有行并始终保存Cat2的最后一个值。无论何时检测到Cat2更改,都可以为新的Cat2插入“header”。因为您首先根据Cat2对结果进行排序,这将创建您想要的输出。
$query = "SELECT ID,Cat1,Cat2 FROM MyTable ORDER BY Cat2,ID"
$result = mysql_query($query);
$last = "";
while ($line = mysql_fetch_row($result)) {
if ($line[2] != $last) {
echo $line[2] . ' Group';
$last = $line[2];
}
echo $line[0] . ' ' . $line[1];
}