Php 在日历中突出显示当前日期
我有一个生成日历的PHP代码。我试图在此代码中突出显示当前日期:Php 在日历中突出显示当前日期,php,javascript,calendar,Php,Javascript,Calendar,我有一个生成日历的PHP代码。我试图在此代码中突出显示当前日期: <?php require("aacfs.php"); define("ADAY", (60*60*24)); if ((!isset($_POST['month'])) || (!isset($_POST['year']))) { $nowArray = getdate(); $month = $nowArray['mon']; $year = $nowArray['year']; } else
<?php
require("aacfs.php");
define("ADAY", (60*60*24));
if ((!isset($_POST['month'])) || (!isset($_POST['year']))) {
$nowArray = getdate();
$month = $nowArray['mon'];
$year = $nowArray['year'];
} else {
$month = $_POST['month'];
$year = $_POST['year'];
}
$start = mktime(12,0,0,$month,1,$year);
$firstDayArray = getdate($start);
?>
<html>
<head>
<title><?php echo "Calendar: ".$firstDayArray['month']." " . $firstDayArray['year']; ?></title>
</head>
<script type="text/javascript">
function eventWindow(url) {
var width = 500;
var height = 500;
var left = parseInt((screen.availWidth/2) - (width/2));
var top = parseInt((screen.availHeight/2) - (height/2));
var windowFeatures = "width=" + width + ",height=" + height + ",status,resizable,left=" + left + ",top=" + top + "screenX=" + left + ",screenY=" + top;
event_popupWin = window.open(url, "subWind", windowFeatures, "POS", 'event', 'resizable=yes,scrollbars=yes,toolbar=no,width=400,height=400');
event_popupWin.opener = self;
}
</script>
<script type="text/javascript">
function hiliteToday(){
var nDate = new Date();
nDate = nDate.getDate();
var nTable = document.getElementById('currMonth');
nRows = nTable.rows.length;
nCells = nTable.rows[0].cells.length;
for (i=0; i<nRows; i++)
{
for (n=0; n<nCells; n++)
{
var tmp = nTable.rows[i].cells[n].innerHTML;
tmp = tmp.split("<");
if (tmp[0] == nDate){nTable.rows[i].cells[n].style.backgroundColor = 'cyan'}
}
}
}
window.onload=hiliteToday;
</script>
<body>
<h1><center>Select a Month/Year</center></h1>
<center><form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<select name="month">
<?php
$months = Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
for ($x=1; $x<=count($months); $x++){
echo "<option value=\"$x\"";
if ($x == $month){
echo " selected";
}
echo ">".$months[$x-1]."</option>";
}
?>
</select>
<select name="year">
<?php
for ($x=2012; $x<=2027; $x++){
echo "<option";
if ($x == $year){
echo " selected";
}
echo ">$x</option>";
}
?>
</select>
<input type="submit" name="submit" value="Go">
</form></center>
<br />
<?php
$days = Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
echo "<center><table border=\"1\" cellpadding=\"5\" id=\"currMonth\"><tr>\n";
foreach ($days as $day) {
echo "<td style=\"background-color: #CCCCCC; text-align: center; width: 14%\">
<strong>$day</strong></td>\n";
}
for ($count=0; $count < (6*7); $count++) {
$dayArray = getdate($start);
if (($count % 7) == 0) {
if ($dayArray["mon"] != $month) {
break;
} else {
echo "</tr><tr>\n";
}
}
if ($count < $firstDayArray["wday"] || $dayArray["mon"] != $month) {
echo "<td> </td>\n";
} else {
$chkEvent_sql = "SELECT acode FROM reservation WHERE month(etd) = '".$month."' AND dayofmonth(etd) = '".$dayArray["mday"]."' AND year(etd) = '".$year."' ORDER BY etd";
$chkEvent_res = mysql_query($chkEvent_sql) or die(mysql_error());
if (mysql_num_rows($chkEvent_res) > 0) {
$event_title = "<br/>";
while ($ev = mysql_fetch_array($chkEvent_res)) {
$event_title .= stripslashes($ev["acode"])."<br/>";
}
mysql_free_result($chkEvent_res);
} else {
$event_title = "";
}
echo "<td valign=\"top\"><a href=\"javascript:eventWindow('event.php?m=".$month."&d=".$dayArray["mday"]."&y=$year');\">".$dayArray["mday"]."</a><br/>".$event_title."</td>\n";
unset($event_title);
$start += ADAY;
}
}
echo "</tr></table></center>";
mysql_close();
?>
</br><center><a href="javascript:self.close()"><font face="consolas"><b>Close</b></font></a></center>
</body>
</html>
函数事件窗口(url){
var宽度=500;
var高度=500;
var left=parseInt((screen.availWidth/2)-(width/2));
var top=parseInt((screen.availHeight/2)-(height/2));
var windowFeatures=“width=“+width+”,height=“+height+”,状态,可调整大小,left=“+left+”,top=“+top+”screenX=“+left+”,screenY=“+top;
event_popupWin=window.open(url,“subWind”,windowFeatures,“POS”,“event”,“resizeable=yes,scrollbars=yes,toolbar=no,width=400,height=400”);
event_popupWin.opener=self;
}
函数hilitotoday(){
var nDate=新日期();
nDate=nDate.getDate();
var nTable=document.getElementById('currMonth');
nRows=nTable.rows.length;
nCells=nTable.rows[0].cells.length;
对于(i=0;i您正在使用if(tmp[0]==nDate)检查表单元格是否具有当前日期。在今天的示例“21”中。
但您从未将表格单元格的天数设置为“天”
将第二个for循环更改为:
for (n=0; n<nCells; n++)
{
var tmp = nTable.rows[i].cells[n].innerHTML;
if (tmp.search(nDate)!=-1){nTable.rows[i].cells[n].style.backgroundColor = 'cyan'}
}
for(n=0;n请在var tmp=nTable.rows[i]之后添加警报(tmp);单元格[n].innerHTML;并给出第21天的输出。但请注意,您会收到42个警报。它会向太阳发出警报,然后最后向卫星发出警报。它会向第一行的每一列发出警报。但在您的日历中,每天都有一个数字?所以21号是星期五,21号也在日历中?@svennnergr,它确实起作用了,但我没有注意到它也会在每个月的“24”处高亮显示。例如,今天是“24”,它确实高亮显示,但当我进入下一个月,例如10月时,“24”日期也会高亮显示。我如何解决这个问题?谢谢。请参见编辑。添加id=\“”.$month.\$dayArray[“mday”.“\”给你的回显tds一个变化HilitoDay()
<a href="">DAYOFMONTH</a>Title
<script type="text/javascript">
function hiliteToday(){
var nDate = new Date();
var sDate = nDate.getMonth()+1 + "_" + nDate.getDate();
document.getElementById(sDate).style.backgroundColor = 'cyan';
}
window.onload=hiliteToday;
</script>
echo "<td id=\"".$month."_".$dayArray["mday"]."\" valign=\"top\"><a href=\"javascript:eventWindow('event.php?m=".$month."&d=".$dayArray["mday"]."&y=$year');\">".$dayArray["mday"]."</a><br/>asdas</td>\n";