我无法弄清楚如何在一个循环中在单独的html表中显示来自mysql的数据。
以下是我的mysql表的外观:
date name
---- ----
2011-02-02 Katrin
2011-02-02 Michael
2011-02-02 Joe
2011-02-05 David
2011-02-05 Steve
etc...
注意:我知道如何从表中获取数据。
这个想法是根据日期创建单个表。例如,这里应该生成html;
<table>
<tr>
<td>date</td><td>name</td>
<td>2011-02-02</td><td>Katrin</td>
<td>2011-02-02</td><td>Michael</td>
etc..
</tr>
</table>
<table>
<tr>
<td>date</td><td>name</td>
<td>2011-02-05</td><td>Joe</td>
<td>2011-02-02</td><td>David</td>
etc..
</tr>
</table>
这是我尝试的。
我已经计算了从表格中提取了多少个不同的日期。之后我使用“for”语句来“绘制”表格。
在这种情况下,total_dates为2
<?php for($x = 0; $x < $total_dates; $x++): ?>
<table>
<tr>
<tr>
</table>
<?php endif; ?>
到目前为止一切顺利。该代码绘制表格。问题是我无法弄清楚程序逻辑如何在表中显示数据,因此每个表都包含按日期分组的数据。
答案 0 :(得分:1)
您可能希望先根据日期对数据进行分组(查看GROUP BY语句)。如果按顺序排列,则可以按记录循环遍历数据记录。在每次迭代中包含一个if语句,用于检查日期是否与上一次迭代相比发生了更改。如果是这种情况,请关闭表格并打开一个新表格。喜欢(未经测试):
<table>
<? $prevDate = null; ?>
<? foreach($myData as $row){ ?>
<? if($prevDate != null && $prevDate != $row['date']) { ?>
</table><table>
<? } ?>
<tr>
<td>date</td>
<td>name</td>
<td>2011-02-02</td>
<td>Katrin</td>
<td>2011-02-02</td>
<td>Michael</td>
</tr>
<? $prevDate = $row['date']; ?>
<? } ?>
答案 1 :(得分:0)
你可以在一个循环中完成,但条件是你需要订购日期。
做这样的事情:
$table_header = '<table><tr><th>Header 1</th><th>Header 2</th></tr>';
$table_end = '</table>';
$flag = false;
echo $table_header;
for ($x in $total) {
if ($flag != $x->date && $flag != false) {
echo $table_end;
echo $table_header;
}
// Display table content for the current row
echo '<tr><td>'.$value.'</td><td>'.$value.'</td></tr>';
$flag = $x->date;
}
echo $table_end;