我有这个美丽而多才多艺的日历脚本
$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>
它只是简单地循环,给定一天,通过整个月并绘制一个表日历:到目前为止一切顺利
现在棘手的部分:我有一个这样的事件记录集:
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">
事件相对应的日历单元格(即带有 ),如果事件仅限于一天,那将不会那么困难......但有些事件跨越多个连续的日子(即从 5 日到12 月 8 日),我不知道如何突出显示对应于 5、6、7 和 8 的单元格
请注意数据库字段eve_from
并且eve_to
总是填写(如果事件仅在一天内发生,日期相同)更多,有些事件可以重叠(即一个从 12 月 5 日到 8 日,另一个从 12 月 7 日到 9 日):在理想的世界中,如果存在一个或多个事件,我需要两者都简单地突出显示单元格(对于日历的小版本) , 并列出单元格的事件(对于日历的大版本)
您对如何实现这一目标有一些想法吗?
像往常一样提前谢谢!