假设你有一张这样的桌子:

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];
}

10-05 18:15