1

音楽祭のタイムテーブルサイトを作っています。このサイトの目的は、人々が見たいアクトを選択し、イベントの個人的なタイムテーブルを作成することです. 現在、サイトには 2 つのテーブルがあります。

  1. フェスティバルでの行為の完全なリスト
  2. ユーザーの個人的なタイムテーブル

これが私の問題です。アクトが完全なリストからユーザーの個人的なタイムテーブルに追加されるたびに、ユーザーのタイムテーブルのすべてのテーブル行を反復処理し、衝突を強調する関数が必要です。この衝突は別の形式になります (議論のために、衝突を示すために行の背景を赤に変えるとしましょう)。

どうすればいいですか?

テーブル コード:

<table id="fri_myTimes">
    <thead>
    <tr><th>Act</th>
    <th>Start Time</th>
    <th>End Time</th>
    <th>Duration</th>
    </tr></thead>
    <tbody>
<tr id="band-Young-Guns class="Main">
<td>Young Guns</td>
<td>12:00:00</td>
<td>12:30:00</td>
<td>30</td>
<td><div id="btn-Young-Guns" class="del">&nbsp;</div></td>
</tr>
<tr id="band-Frankie-And-The-Heartstrings" class="NME-/-Radio-1">
<td>Frankie And The Heartstrings</td>
<td>12:00:00</td>
<td>12:30:00</td>
<td>30</td>
<td>
<div id="btn-Frankie-And-The-Heartstrings" class="del">&nbsp;</div></td></tr>
</tbody>

4

1 に答える 1

0

PHP を使用し、テーブルに新しい時間を挿入してから、ユーザーのタイムテーブルをレイアウトします。タイムテーブルをレイアウトするときは、ユーザーが選択したアクトをすべて選択し、時間順に表示します

user
id | username | email | etc
33 | BillyBob | ...   |
... etc ...

timetable
id           | user_id | act_id
1            | 33      | 5
2            | 33      | 6
3            | 33      | 19

acts

id | start_time        | end_time         | title             | description
5  | 2010-11-20 11:00  | 2010-11-20 13:00 | Smashing Tomatoes |
6  | 2010-11-20 12:00  | 2010-11-20 14:00 | Stray Dogs        |
7  | 2010-11-21 11:00  | 2010-11-21 13:00 | Mister Googo      |
....
19 | 2010-11-21 12:00  | 2010-11-21 14:00 | Reeses Pieces     |

select t.*, a.title, UNIX_TIMESTAMP(a.start_time) as epoch_start, UNIX_TIMESTAMP(a.end_time) as epoch_end from timetable t join acts a on ( t.act_id = a.id ) where t.user_id = 33;

$timetable = array ();
while ( $rs = mysql_fetch_array ( $r, MYSQL_ASSOC ) )
{
    foreach ( $timetable as $tt )
    {
        if ( $rs['epoch_start'] > $tt['epoch_start'] and $rs['epoch_start'] < $rs['epoch_end'] )
        {
            $rs['conflict'] = $tt['id'];
        }
    }

    $timetable[$rs['id']] = $rs;
}


foreach ( $timetable as $toss => $tt )
{
   echo $tt['title'];
   if ( $tt['conflict'] )
   {
       $conflict = $timetable[$tt['conflict']];
       echo "note: this time conflicts with {$conflict['title']}";
   }
}

...テストされていないコードですが、それが要点です。そこにはいくつかの構文エラーと論理エラーがあることを保証しますが、それ概念であり、1 つのアプローチです。

私は time_id のことから離れました。それほど役に立ちませんでした。

于 2010-08-16T21:39:26.217 に答える