phpカレンダー縦型から格子型へ
予約状況用の既存スクリプトから表示を変更させたいのですが、
変更内容は以下の通りです。(PHP+MySQL)
▼縦型から
------------------------
|1日 |○|
|2日 |×|
・・・
|31日 |×|
▼カレンダー形式へ
------------------------
| |1|2|3|4|5|6|
|○|×|△|○|○|×|×|
|7|8|9|10|11|12|13|
|○|×|△|○|○|×|×|
・・・
------------------------------------------------
<table border="1">
<tr bgcolor="#ffd700">
<td>日付</td>
<?php
// 部屋表示
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
$roomid = $row["roomid"];
$roomname = cnv_dispstr($row["roomname"]);
$link = $_SERVER["PHP_SELF"]."?act=det&roomid=".$roomid;
?>
<td><a href="<?php echo $link?>">
<?php echo $roomname ?></a></td>
<?php } ?>
</tr>
<?php
$lastd = date("d", mktime(0, 0, 0, $mm + 1, 0, $yyyy));
for ($i = 1; $i <= $lastd; $i++) {
?>
<tr>
<?php
$ts = mktime(0, 0, 0, $mm, $i, $yyyy);
$ymd = date("Y/m/d", $ts);
$ymdstr = strftime("%Y年%m月%d日(%a)", $ts);
?>
<td><?php echo $ymd ?></td>
<?php
// 部屋ごとの予約表示
$res = mysql_query($sql, $conn) or die("データ抽出エラー");
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
$roomid = $row["roomid"];
$roomname = cnv_dispstr($row["roomname"]);
$link = $_SERVER["PHP_SELF"].
"?act=upd&hiduke=".$ymd."&roomid=".$roomid; ?>
<td><a href="<?php echo $link?>">
<?php echo yoyakuchk($ymd,$roomid) ?></a></td>
<?php } ?>
</tr>
<?php } ?>
</table>
------------------------------------------------
調べたところ
$lastd = date("d", mktime(0, 0, 0, $mm + 1, 0, $yyyy));
for ($i = 1; $i <= $lastd; $i++) {
$days = date("d", mktime(0, 0, 0, $mm, $i, $yyyy));
$first_day = date('w', mktime(0, 0, 0, $mm, 1, $yyyy));
$last_day = date('w', mktime(0, 0, 0, $mm, $days, $yyyy));
}
$last_week_days = ($days + $first_day) % 7;
if ($last_week_days == 0){
$weeks = ($days + $first_day) / 7;
}else{
$weeks = ceil(($days + $first_day) / 7);
}
今月の日数、最初の日、最後の日の曜日、最後の週の曜日を得ればいいんだろうというところまでは分かったんですが、どう書き換えていいかわかりません。どなたか参考となるソースをご指南頂けると、とても助かります。