PHP:使用mysql数据填充固定大小的图表

时间:2012-12-29 22:28:16

标签: php mysql

我有一张表格。让我们说5比5.我运行一个循环,如

<table>
    <tbody>
     <?php for ($i = 0; $i < 5; $i += 5) {
           echo "<tr>
              <td>one box</td>
              <td>one two</td>
              <td>one three</td>
              <td>one four</td>
           <tr>";
      }?>
     </tbody>
</table>

它会创建一个表格,例如

 |      |      |      |      |       |
 -------------------------------------
 |      |      |      |      |       |
 -------------------------------------
 |      |      |      |      |       |
 -------------------------------------
 |      |      |      |      |       |
 -------------------------------------
 |      |      |      |      |       |
 -------------------------------------

现在我为我的目的加载了mysql数据,我需要它分别放入数据,所以表格看起来像

 |      |      |      |      |       |
 -------------------------------------
 |      |      |      |      |       |
 -------------------------------------
 |      | Res 1|      |      |       |
 -------------------------------------
 |      |      |      | Res 3|       |
 -------------------------------------
 |      |Res 4 |      |      |  Res 2|
 -------------------------------------

我该怎么做?我有50个结果,需要将结果填入正确的列和行。我需要做一些if(results [0-50] ['id'] == rowcolumnid)在执行for循环时回显正确表的结果。


编辑:这是我的完整代码。

    <table id="schedule">
        <tbody>
            <?php
            $time = mktime(0, 0, 0, 1, 1);
            for ($i = 28800; $i < 62200; $i += 1800) { ?>
             <tr id="row<?php echo $i; ?>">
                <td id="hour">
                    <?php 
                    printf('%1$s',date('g:i a', $time + $i)); 
                    ?>
                </td>
                                    <td id="sunday"></td>
                                    <td id="monday"></td>
                                    <td id="tuesday"></td>
                                    <td id="thursday"></td>
                                    <td id="friday"></td>
                                    <td id="saturday"></td>
            </tr>
            <?php } ?>
        </tbody>
    </table>

我的mysql结果采用日期时间格式,我将用它来传播表格。

结果:

ID| EVENT NAME | DATEOFEVENT
1 | event name | 2012-11-20 12:00:00
2 | event name | 2012-11-21 13:30:00
3 | event name | 2012-11-22 13:00:00
4 | event name | 2012-11-23 11:00:00
5 | event name | 2012-11-24 08:00:00

我可以对日期和日期命令进行strtotime以匹配。

1 个答案:

答案 0 :(得分:1)

如果您首先获取数据(或者如果您首先获取第一个数据时它被排序),那么您可以在匹配迭代的时间/时间来绘制表格时迭代数据。

作为一个例子,我选择只显示一个代表5小时(1-5)的列,其中一些可以匹配。那些匹配的,存储在一个数组中,并作为迭代器(ArrayIterator)提供:

$data = [3,5];
$datas = new ArrayIterator($data);
$datas->rewind();

匹配的小时数用1表示,不匹配的小时表示0:

echo "+---+---+\n";

foreach(range(1, 5) as $hour)
{
    if ($hasData = ($datas->valid() and $datas->current() === $hour)) {
        $datas->next();
    }
    $hasData = (int) $hasData;


    echo "| $hour | $hasData |\n";
    echo "+---+---+\n";
};

输出:

+---+---+
| 1 | 0 |
+---+---+
| 2 | 0 |
+---+---+
| 3 | 1 |
+---+---+
| 4 | 0 |
+---+---+
| 5 | 1 |
+---+---+

如果来自数据的数据可用作迭代器(通常情况下,mysql_*需要为您编写一个)并且是否已对其进行排序,则此方法非常有效。

即使这只是这里的单个列表,对于一个实际上同样有效的表,因为表只是表示数据的另一种形式。