我的数据库包含 event_date , 主题 和 说明列> 在我的mysql表中。 目前,我使用以下代码显示日历以突出显示事件的日期,并点击该特定日期,显示说明..
但是使用此代码,在页面加载时,它会显示默认的当前月份。而不是我想要显示下一个月安排哪个事件。
您可以访问this link以查看...此处显示4月当前月份,在选择5月份之后,它会显示事件..然后在6月没有事件...但是在7月。 所以我想在2015年5月至5月28日期间显示日历,然后它应该显示7月而不是6月,因为6月份没有安排活动。
现行守则如下:
<?php
date_default_timezone_set('Asia/kolkata');
error_reporting(0);
include("config.php");
/// 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");
$cYear = date("Y");
}
// generate an array with all dates with events
$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE `event_date` LIKE '".$cYear."-".$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"]]["subject"] = $row["subject"];
$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;
// set css class name based on number of events for that day
if ($events[$cYear."-".$cMonth."-".$current_day]<>'') {
$css='withevent';
$click = "onclick=\"LoadEvents('".$cYear."-".$cMonth."-".$current_day."')\"";
} else {
$css='noevent';
$click = '';
}
echo "<td class='".$css."'".$click.">". $current_day . "</td>";
if (($i % 7) == 6 ) echo "</tr>";
}
?>
</table>
答案 0 :(得分:0)
我发现解决方案如下:
<?
date_default_timezone_set('Asia/kolkata');
error_reporting(0);
include("config.php");
$ceYear=date("Y");
$ceMonth=date("m");
$sqlevent = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE YEAR(`event_date`) >= ".$ceYear." AND MONTH(`event_date`) >= ".$ceMonth." ";
$sql_resultevent = mysql_query ($sqlevent, $connection ) or die ('request "Could not execute SQL query" '.$sqlevent);
$rowevent = mysql_fetch_array($sql_resultevent);
/// 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"]));
}
// 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" style="background-color:#c90404; color:#FFFFFF;">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;
// set css class name based on number of events for that day
if ($events[$cYear."-".$cMonth."-".$current_day]<>'') {
$css='withevent';
$click = "onclick=\"LoadEvents('".$cYear."-".$cMonth."-".$current_day."')\"";
} else {
$css='noevent';
$click = '';
}
echo "<td class='".$css."'".$click.">". $current_day . "</td>";
if (($i % 7) == 6 ) echo "</tr>";
}
?>
</table>