0

表表があります。5x5としましょう。次のようなループを実行します。

<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件の結果があり、結果を正しい列と行に入力する必要があります。forループの実行中に、ある種のif(results [0-50] ['id'] == rowcolumnid)を実行して正しいテーブルの結果をエコーする必要があります。


編集:これが私の完全なコードです。

    <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と一致するdateコマンドを実行できます。

4

1 に答える 1

1

最初にデータを取得する場合 (または、最初のデータを最初に取得する場合は並べ替えられている場合)、テーブルを描画するために反復する時間/時間に一致する場合は、データを反復処理できます。

例として、5 時間 (1 ~ 5) を表す列を 1 つだけ表示するように選択しました。そのうちのいくつかは照合できます。一致したものは配列に格納され、反復子 ( 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_*作成する必要があるため)、ソートされている場合に完全に機能します。

これはここでは 1 つのリストにすぎませんが、テーブルはデータを表す別の形式であるため、テーブルの場合は実際には同じように機能します。

于 2012-12-29T22:44:27.557 に答える