简体   繁体   中英

How to disable previous dates in php calendar

I am using following code to display events from mysql database. I want to disable previous dates (dates before current server date).

How can I do this ? Thank you for help in advance.

code is :

<?
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>";
}
?> 

I am not getting where to edit code to achieve final result..

When you deal with date you need to be sure of the timezone :

date_default_timezone_set('UTC');

why are you not using stuff like :

date("Y-m", strtotime("+1 month", strtotime('2015-07-22')))

It will decrease your code drastically.

and you can compare date like that in the if (where you set onclick) :

strtotime($date) <= strtotime($end_date)

Hope it will help.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM