我有一个SQL,它返回mysql表中的记录。每个记录都有许多字段,其中一个字段叫做" type"这是样本的类型。所有样品大致分为六种类型。我正在显示表中的所有记录。但是我希望通过' type'对数据进行分组。并显示单独的表格,类型为侧标题。目前我使用这个脚本。
echo "<table class='wqtable'><tr><th>USIN</th><th>Type</th><th>Date of Coll.</th> <th>Location</th><th>Description</th><th>H3</th><th>Cs</th><th>Sr</th><th>Analyst</th></tr>";
while($data=mysql_fetch_array($result)){
echo "<tr>";
echo "<td>".$data['usin']."</td>";
echo "<td>".$data['type']."</td>";
echo "<td>".$data['doc1']."</td>";
echo "<td>".$data['location']."</td>";
echo "<td>".$data['description']."</td>";
echo "<td>".$data['h3']."</td>";
echo "<td>".$data['cs']."</td>";
echo "<td>".$data['sr']."</td>";
echo "<td>".$data['name']."</td>";
echo"</tr>";
}
echo "</table>";
这将显示一个表中的所有记录。我想在显示类型字段中具有相同值的所有记录时中断表,并为下一类样本开始新表。 (比如组头)除了运行单独的SQL之外,还有什么简单的方法吗?
答案 0 :(得分:1)
确保您的SQL查询为ORDER BY type
,然后在while
循环中执行此操作:
$lastType = '';
echo '<table>';
while($data=mysql_fetch_array($result)) {
if($lastType != '' && $lastType != $data['type']) {
echo '</table>';
echo '<table>';
}
echo "<tr>";
echo "<td>".$data['usin']."</td>";
echo "<td>".$data['type']."</td>";
echo "<td>".$data['doc1']."</td>";
echo "<td>".$data['location']."</td>";
echo "<td>".$data['description']."</td>";
echo "<td>".$data['h3']."</td>";
echo "<td>".$data['cs']."</td>";
echo "<td>".$data['sr']."</td>";
echo "<td>".$data['name']."</td>";
echo"</tr>";
$lastType = $data['type'];
}
echo '</table>';
我没有对其进行过测试,但每当type
更改时,它都会插入一个结束并打开table
标记(您显然可以在其中添加任何其他内容)。
答案 1 :(得分:0)
我设置了一个SQL存储过程,我使用GROUP BY方法对数据进行分组。我从Microsoft SQL Server上的SSRS报告中采用了这种技术。我创建了包含我可能会使用的特定信息的视图。然后我执行存储过程,就像在报表生成器或其他东西中设置数据源一样。这将自动为您分组数据,然后我可以在以下结构中过滤数据:
MainGroupA
ChildGroupA
数据
数据
MainGroupB {
ChildGroupA {
...
答案 2 :(得分:0)
如果您不想按查询中的类型进行排序,则可以将HTML构建为数组。例如:
$table_types = array();
while($data = mysql_fetch_array($result))
{
$html = "";
$html .= "<tr>";
$html .= "<td>".$data['usin']."</td>";
$html .= "<td>".$data['type']."</td>";
$html .= "<td>".$data['doc1']."</td>";
$html .= "<td>".$data['location']."</td>";
$html .= "<td>".$data['description']."</td>";
$html .= "<td>".$data['h3']."</td>";
$html .= "<td>".$data['cs']."</td>";
$html .= "<td>".$data['sr']."</td>";
$html .= "<td>".$data['name']."</td>";
$html .= "</tr>";
$table_types[$data['type']][] = $html;
}
foreach($table_types as $type => $rows)
{
// Use a switch statement to put the correct text heading above the table.
echo "<h3>Type ".$type."</h3>";
echo "<table class='wqtable type-".$type."'><tr><th>USIN</th><th>Type</th><th>Date of Coll.</th><th>Location</th><th>Description</th><th>H3</th><th>Cs</th><th>Sr</th><th>Analyst</th></tr>";
echo implode($rows);
echo "</table>";
}