假设您有一张这样的表:
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 = mysql_fetch_row($result) 的数组
使用$value[2]
中的第三列值来限制我的行输出
$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];
}
关于PHP - 从 MySQL 表中获取大数组的有限 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1761732/