データベースに次の構造のテーブルエントリがあります。
id | card | event | time | day | hm
- > id-各エントリの一意のIDです。
- >カード-は番号です。
- >イベント-は番号(0、1、2、または3)です
- >時間-mysql_timestampです
- >日-エントリが追加された日です(date( "j"、time())
- > hm-その他の情報...
1か月間のすべてのエントリをhtmlテーブルに表示したい。今、私はこの単純なクエリを使用しています:
$sql = "SELECT event, time, day, hm FROM `entries`
WHERE card=$card_t
AND YEAR(time)=$year
AND MONTH(time)=$month
AND event IN (0,1,3)
ORDER BY `time` ASC;";
出力の条件:テーブルには、1日あたり最低1行(1月は31行)が必要です。day(1-31)行のエントリがない場合は、次のようにする必要があります。日行のエントリが2つしかない場合は、次のようにする必要があります。
<tr>
<td>$day_number</td>
<td>$time_of_first_event</td>
<td>$first_event</td>
<td>$time_of_last_event</td>
<td>$last_event</td>
</tr>
if there is more than two entries a day two must be (I will hide second one with jquery later):
<tr>
<td>$day_number</td>
<td>$time_of_first_event</td>
<td>$first_event</td>
<td>$time_of_last_event</td>
<td>$last_event</td>
</tr>
<tr>
<table>
<tr>
<td>$time</td>
<td>$event</td>
</tr>
</table>
</tr>
したがって、次のようになります。
| 1 | no entry |
| 2 | no entry |
| 3 | no entry |
| 4 | time_first | event_fisrt | time_last |event_last |
| time2 | event 2 |
| time3 | event 3 |
| 5 | no entry |
...
しかし、私が今得たのは31行の出力であり、ある日がそれよりも多い場合、この日の行を複製し、この日のすべての行を表示します。
| 1 | no entry |
| 2 | no entry |
| 3 | no entry |
| 4 | time1 event 1 |
| 4 | time2 event 2 |
| 4 | time3 event 3 |
| 5 | no entry |
...
私を助けてください、そして間違いをお詫びします、英語は私の母国語ではありません。