在html表中显示来自mysql的数据

时间:2011-10-26 14:02:16

标签: php mysql

我无法弄清楚如何在一个循环中在单独的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; ?>

到目前为止一切顺利。该代码绘制表格。问题是我无法弄清楚程序逻辑如何在表中显示数据,因此每个表都包含按日期分组的数据。

2 个答案:

答案 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;