0

我有一个表格图表。让我们说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 和一个日期命令来匹配。

4

1 回答 1

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_*您需要编写一个)并且它已排序,则此方法非常有效。

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

于 2012-12-29T22:44:27.557 回答