【发布时间】:2014-04-07 15:46:16
【问题描述】:
我有以下记录集:
Date |Role |Name
=============================
01/02/14 |Musician |Bob
01/02/14 |Leader |Jerry
01/02/14 |Singer |Carol
08/02/14 |Musician |Charles
08/02/14 |Leader |Baz
08/02/14 |Singer |Norman
并且我希望数据以列表/名册格式显示。例如。
Role |01/02/14 |08/02/14
===============================
Musician |Bob |Charles
Leader |Jerry |Baz
Singer |Carol |Norman
理想情况下,我希望在不更改 MySQL 查询的情况下在 php 中完成。
这是我到目前为止所得到的,但它不是很有效。
$temprole='norole';
$newkey=0;
echo "<table><tr>";
foreach ($result as $key => $val) {
echo "<td>" . $val['date'] . "</td>";
if ($temprole==$val['role_name']){ //is the same role?
} else {
//If the role name is different, print the role column
echo $val['role_name'] . "</br>";
}
$temprole = $val['role_name'];
}
echo "</tr></table>";
echo "<hr>";
【问题讨论】:
-
你应该可以用循环来做到这一点。即使您不想更改 SQL,您也应该让结果集按角色(行)然后按日期(列)排序。然后循环:每次更改 Role 时创建一个新角色,并为每个日期放入相应的 HTML 表格列。
-
MySQL pivot table的可能重复
-
“我希望它完成......”好主意。只需使用一个简单的循环。
-
有人可以给我一个更清楚的例子来说明如何使用 php 中的循环来做到这一点吗?谢谢。
-
完成您需要的通用解决方案并不像最初看起来那么简单。例如,如果某天缺少某些角色怎么办。另外,如果您希望以不同的顺序打印角色怎么办。我已经考虑过了,将尝试创建一些代码来处理上述情况,并且仍然很容易更改。