我使用以下代码来显示mysql数据库中的事件。我想禁用以前的日期(当前服务器日期之前的日期)。
我该怎么做?提前谢谢你的帮助。
代码是:
<?
include("config.php");
$ceYear=date("Y");
$ceMonth=date("m");
$ceDay = date("d");
$sqlevent = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE YEAR(`event_date`) >= ".$ceYear." AND MONTH(`event_date`) >= ".$ceMonth." order by event_date ASC ";
$sql_resultevent = mysql_query ($sqlevent, $connection ) or die ('request "Could not execute SQL query" '.$sqlevent);
$rowevent = mysql_fetch_array($sql_resultevent);
$lang = $rowevent['language'];
/// get current month and year and store them in $cMonth and $cYear variables
if($_REQUEST["month"]>0){
$cMonth = "0".intval($_REQUEST["month"]);
if ($_REQUEST["month"]>9) {
$cMonth = intval($_REQUEST["month"]);
}
$cYear = intval($_REQUEST["year"]);
}else
{
$cMonth = date("m", strtotime($rowevent["event_date"]));
$cYear = date("Y", strtotime($rowevent["event_date"]));
$cDay = date("d", strtotime($rowevent["event_date"]));
}
// to highlight current day
$tDay = date("d");
$tMonth = date("m");
$tYear = date("Y");
// generate an array with all dates with events
$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE YEAR(`event_date`) >= ".$cYear." AND MONTH(`event_date`) >= ".$cMonth." ";
$sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);
while ($row = mysql_fetch_assoc($sql_result)) {
$events[$row["event_date"]]["title"] = $row["title"];
$events[$row["event_date"]]["description"] = $row["description"];
}
// calculate next and prev month and year used for next / prev month navigation links and store them in respective variables
$prev_year = $cYear;
$next_year = $cYear;
$prev_month = intval($cMonth)-1;
$next_month = intval($cMonth)+1;
// if current month is December or January month navigation links have to be updated to point to next / prev years
if ($cMonth == 12 ) {
$next_month = 1;
$next_year = $cYear + 1;
} elseif ($cMonth == 1 ) {
$prev_month = 12;
$prev_year = $cYear - 1;
}
if ($prev_month<10) $prev_month = '0'.$prev_month;
if ($next_month<10) $next_month = '0'.$next_month;
?>
<table width="100%">
<tr>
<td class="mNav"><a href="javascript:LoadMonth('<?php echo $prev_month; ?>', '<?php echo $prev_year; ?>')"><<</a></td>
<td colspan="5" class="cMonth"><?php echo date("F, Y",strtotime($cYear."-".$cMonth."-01")); ?></td>
<td class="mNav"><a href="javascript:LoadMonth('<?php echo $next_month; ?>', '<?php echo $next_year; ?>')">>></a></td>
</tr>
<tr>
<td class="wDays">Sun</td>
<td class="wDays">Mon</td>
<td class="wDays">Tue</td>
<td class="wDays">Wed</td>
<td class="wDays">Thu</td>
<td class="wDays">Fri</td>
<td class="wDays">Sat</td>
</tr>
<?php
$first_day_timestamp = mktime(0,0,0,$cMonth,1,$cYear); // time stamp for first day of the month used to calculate
$maxday = date("t",$first_day_timestamp); // number of days in current month
$thismonth = getdate($first_day_timestamp); // find out which day of the week the first date of the month is
$startday = $thismonth['wday'] ; // 0 is for Sunday and as we want week to start on Mon we subtract 1
for ($i=0; $i<($maxday+$startday); $i++) {
if (($i % 7) == 0 ) echo "<tr>";
if ($i < $startday) { echo "<td> </td>"; continue; };
$current_day = $i - $startday + 1;
if ($current_day<10) $current_day = '0'.$current_day;
if ($tDay == $current_day && $tMonth == $cMonth && $tYear == $cYear) { $tCurrent = "today";} else {$tCurrent = "";}
// set css class name based on number of events for that day
if (isset($events[$cYear."-".$cMonth."-".$current_day]) && $events[$cYear."-".$cMonth."-".$current_day] <>'') {
$css='withevent '.$tCurrent;
$click = "onclick=\"LoadEvents('".$cYear."-".$cMonth."-".$current_day."')\"";
} else {
$css='noevent '.$tCurrent;
$click = '';
}
echo "<td class='".$css."'".$click.">". $current_day . "</td>";
if (($i % 7) == 6 ) echo "</tr>";
}
?>
我无法编辑代码以获得最终结果。
答案 0 :(得分:1)
当你处理日期时,你需要确定时区:
http://localhost:1234/?id=3333#/Plya/Home
你为什么不使用像这样的东西:
date_default_timezone_set('UTC');
它会大大减少您的代码。
你可以比较if(你设置onclick)的日期:
date("Y-m", strtotime("+1 month", strtotime('2015-07-22')))
希望它会有所帮助。