如何在php日历中禁用以前的日期

时间:2015-07-22 08:42:21

标签: php calendar

我使用以下代码来显示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; ?>')">&lt;&lt;</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; ?>')">&gt;&gt;</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>&nbsp;</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>";
}
?> 

我无法编辑代码以获得最终结果。

1 个答案:

答案 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')))

希望它会有所帮助。