私はこの美しく用途の広いカレンダースクリプトを持っています
$giorno = isset($_GET['g']) ? $_GET['g'] : date('Y-m-d');
$day = strtotime($giorno);
$today = date('Y-m-d', strtotime('today'));
$date = mktime(0, 0, 0, date("m", $day), 1, date("Y", $day));
$past = mktime(0, 0, 0, date("m", $date)-1, 1, date("Y", $date));
$future = mktime(0, 0, 0, date("m", $date)+1, 1, date("Y", $date));
$days = array("Domenica", "Lunedi", "Martedi", "Mercoledi", "Giovedi", "Venerdi", "Sabato");
$months = array("Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre");
$month = date("m", $date);
$year = date("Y", $date);
$day_offset = 1; //$day_offset % 7;
$start_day = mktime(0, 0, 0, $month, 1, $year);
$start_day_number = date("w", $start_day);
$days_in_month = date("t", $start_day);
<table id="calendar">
<caption>
<div class="left"><a href="<?php echo $phpSelf; ?>?g=<?php echo date('d/m/Y', $past); ?>" title="Mese precedente">‹</a></div>
<div class="right"><a href="<?php echo $phpSelf; ?>?g=<?php echo date('d/m/Y', $future); ?>" title="Mese successivo">›</a></div>
<div class="center"><?php echo $months[$month-1]; ?> <?php echo $year; ?></div>
</caption>
<tr>
<?php for ($x = 0; $x <= 6; $x++) { ?>
<th scope="col"><?php echo substr(strtolower($days[($x+$day_offset)%7]), 0, 2); ?></th>
<?php } ?>
</tr>
<tr>
<?php
$blank_days = $start_day_number - $day_offset;
if ($blank_days < 0) { $blank_days = 7 - abs($blank_days); }
for ($x = 0; $x < $blank_days; $x++) {
?>
<td> </td>
<?php } ?>
<?php for($x = 1; $x <= $days_in_month; $x++) { ?>
<?php if (($x + $blank_days-1) % 7 == 0){ ?>
</tr>
<tr>
<?php } ?>
<?php $day = $year . "-" . $month . "-" . leading($x); ?>
<td><?php echo $x; ?></td>
<?php } ?>
<?php while ((($days_in_month + $blank_days) % 7) != 0) { ?>
<td> </td>
<?php $days_in_month++;
}
?>
</tr>
与えられた 1 日を 1 か月間ループして、テーブル カレンダーを描画するだけ
です。
mysql_select_db($database_connArtesicilia, $connArtesicilia);
$query_rsEvents = "SELECT eventi.eve_id, eventi.eve_name, eventi.eve_from, eventi.eve_to FROM eventi WHERE eventi.eve_active";
$rsEvents = mysql_query($query_rsEvents, $connArtesicilia) or die(mysql_error());
$row_rsEvents = mysql_fetch_assoc($rsEvents);
$totalRows_rsEvents = mysql_num_rows($rsEvents);
イベントに対応するカレンダー セル (つまり
<td class="highlight">
) を強調表示したいのですが、イベントが 1 日だけに制限されている場合はそれほど難しくありません... しかし、一部のイベントは複数の連続した日 (つまり 5 日から12 月 8 日) で、5、6、7、8 に対応するセルを強調表示する方法がわかりません
データベース フィールドとは常に入力されている
ことに注意してください(イベントが 1 日だけ発生する場合、日付は同じです) さらに、一部のイベントは可能性がありますオーバーラップ (つまり、12 月 5 日から 8 日までの 1 つと 12 月 7 日から 9 日までの 1 つ): 理想的な世界では、1 つ以上のイベントが存在する場合、セルを単に強調表示するために両方が必要です (カレンダーの小さなバージョンの場合)。 、およびセルのイベントを一覧表示する (大きなバージョンのカレンダーの場合)
eve_from
eve_to
これを達成する方法について何か考えはありますか?
いつものように、前もってありがとう!