我目前正在处理日历。 当用户在某个日期添加事件时,日历上的日期将通过更改其所属的类而获得另一种背景色。
这是我到目前为止尝试过的:
for ( $day = 1; $day <= $day_count; $day++, $str++) {
$date = $ym . '-' . $day;
for($i=0;$i<$len;$i++){
if($date == $event_data[$i]['event_date'] && $date!=$today){
$week .= "<td class='event'><a href = 'add_calendar.php?date=".$date."'>".$day."</a></td>";
}
}
if ($today == $date ) {
$date_replaced = str_replace(":","",date('Y:m:d'));
$week .= "<td class='today'><a href = 'add_calendar.php?date=".$date."'>".$day."</a>";
}
else {
$week .= "<td><a href = 'add_calendar.php?date=".$date."'>".$day."</a>";
}
$week .= '</td>';
if ($str % 7 == 6 || $day == $day_count) {
if ($day == $day_count) {
$week .= str_repeat('<td></td>', 6 - ($str % 7));
}
$weeks[] = '<tr>' . $week . '</tr>';
$week = '';
}
}
但是,看起来就像图片所示:
添加事件后,就会显示一个新日期并弄乱日历。
有人知道该如何解决吗?非常感谢!
日历的CSS为:
.today {
background: orange;
}
.event {
background: #f6ffdb;
}
答案 0 :(得分:0)
您必须检查一天是否已经结束
尝试
for ( $day = 1; $day <= $day_count; $day++, $str++) {
$datesRendred = array();
$date = $ym . '-' . $day;
for($i=0;$i<$len;$i++){
if($date == $event_data[$i]['event_date'] && $date!=$today && !in_array($date, $datesRendred)){
$week .= "<td class='event'><a href = 'add_calendar.php?date=".$date."'>".$day."</a></td>";
$datesRendred[] = $date;
}
}
if (!in_array($date, $datesRendred)) {
if ($today == $date) {
$date_replaced = str_replace(":","",date('Y:m:d'));
$week .= "<td class='today'><a href = 'add_calendar.php?date=".$date."'>".$day."</a>";
$datesRendred[] = $date;
$week .= '</td>';
}
else {
$week .= "<td><a href = 'add_calendar.php?date=".$date."'>".$day."</a>";
$week .= '</td>';
$datesRendred[] = $date;
}
}
if ($str % 7 == 6 || $day == $day_count) {
if ($day == $day_count) {
$week .= str_repeat('<td></td>', 6 - ($str % 7));
}
$weeks[] = '<tr>' . $week . '</tr>';
$week = '';
}
}
答案 1 :(得分:0)
如评论中所述,无需循环。这样的事情应该可以工作(但显然我自己很难测试,因此您可能仍需要进行一些调整)。
<?php
for ($day = 1; $day <= $day_count; $day++, $str++) {
$date = $ym . '-' . $day;
if ($date == $event_data[$i]['event_date'] && $date != $today) {
$week .= "<td class='event'><a href = 'add_calendar.php?date=" . $date . "'>" . $day . "</a></td>";
}
elseif ($today == $date) {
$date_replaced = str_replace(":", "", date('Y:m:d'));
$week .= "<td class='today'><a href = 'add_calendar.php?date=" . $date . "'>" . $day . "</a>";
}
else {
$week .= "<td><a href = 'add_calendar.php?date=" . $date . "'>" . $day . "</a>";
}
$week .= '</td>';
if ($str % 7 == 6 || $day == $day_count) {
if ($day == $day_count) {
$week .= str_repeat('<td></td>', 6 - ($str % 7));
}
$weeks[] = '<tr>' . $week . '</tr>';
$week = '';
}
}