- 締切済み
MySQLからのイベント情報表示に関して
お助け下さい。 只今イベント情報を掲載するプログラムを作っております。 スケジュール表のように一覧にして、 イベント情報を指定された日に表示するような感じです。 データはMySQLに入っており、 イベントid、イベント名、イベント年、イベント月、イベント日といったものがあります。 ここからスケジュール表にデータを出す場合、 下記のように考えたのですが、 //selectでイベント年とイベント月で検索しその月の情報を取得して //情報を分裂化 while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $id = $row["id"]; $event = $row["event"]; $e_day = $row["e_day"]; //情報を配列に入れる。$e_dayは配列番号に使用 $array_id[$e_day] = $id; $array_event[$e_day] = $event; } このように配列に情報を分けていれて、 for($i = 1; $i <= 31; $i++){ print "$i日は$array_event[$i]\n"; } のように、FORループを使って、それぞれの日に表示するように 作成しました。しかしながら、ここで詰まってしまったのですが、 もし同じ日に2つのイベントがある場合は、 配列番号がタブってしまうために、書き換えられてしまい無理・・・。 その後、MYSQLからのデータの出し方を考えたのですが、 どうも上手く行きません。 IDはユニークで同じものがありませんので、 これを上手く使った方が良いのでしょうか? また表示するデータは、イベントIDとイベント名を含め、 4つのフィールドを各イベント毎に使用します。 何卒、初心者の上、よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
やりかたはいろいろあるでしょうけど、最終的にはどう表示したいか が重要になりますね。 日付を1~31で総なめしてますが、イベントがない日は表示が変になります たとえばソースをいかすならこんな感じでどうでしょう? while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $id = $row["id"]; $event = $row["event"]; $e_day = $row["e_day"]; $array_id[$e_day] = $id; //これつかってる? $array_event[$e_day][] = $event; } foreach($array_event as $key=>$vals){ print "$i日は".implode(",",$vals)."\n"; }
お礼
ネットで調べて出来ました。 ありがとうございました。
補足
返答ありがとうございます。 表示ですが、テーブルで1日~最終日までを表示する形になります。最終日は、date("t");で行なってからになります。 デザインも載せるとこんな感じです。 $array_id[$e_day] = $id; //これつかってる? ですが、これも次のページでそのイベントの詳細を載せたいので、 リンクにつけて使用します。 SQLなど無視しておりますが、 つまりは同じ日にイベントが複数あっても、 それをすべて全部出したいのです。 また何もない日は、スペースを入れて、 そのほかには何もないようにしたいです。 どうかアドバイスをお願いします。 <TABLE border="1" cellpadding="6" cellspacing="1" width="100%"> <TBODY> <TR> <TD width="5%" align="center" bgcolor="#000000"><FONT color="#ffffff">日</FONT></TD> <TD align="center" bgcolor="#000000"><FONT color="#ffffff">パーティ・イベント情報</FONT></TD> </TR> <?php //selectでイベント年とイベント月で検索しその月の情報を取得して //情報を分裂化 while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $id = $row["id"]; $event_name = $row["event_name"]; $e_day = $row["e_day"];//イベントの日 //情報に情報を入力e_dayは番号 $array_id[$e_day] = $id; $array_event_name[$e_day] = $event_name; } for($i = 1;$i <= $n;$i++){ print "<TR bgcolor = \"$bgcolor\">\n"; print "<TD align=center width=\"5%\">$i</TD>\n"; //イベントがあったら表示、なかったらスペースを入れる。 if($array_event_name[$i]){print "<TD>$array_event_name[$i]</TD>\n";} else{print "<TD> </TD>\n";} print "</TR>\n"; ?> </TBODY> </TABLE>