Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 仅突出显示日历中包含数据的日期_Php_Loops_Foreach_While Loop_Calendar - Fatal编程技术网

Php 仅突出显示日历中包含数据的日期

Php 仅突出显示日历中包含数据的日期,php,loops,foreach,while-loop,calendar,Php,Loops,Foreach,While Loop,Calendar,需要这方面的帮助,请选择堆垛机。工作到一定程度,但陷入内循环并超时。显示所选月份的天数,我需要签入数据库,并使用其他类突出显示包含数据的天数 我知道有一些类似的脚本,但这是响应性的,在sqlite上运行,不使用表 这就是我得到的: ############################################################# $months31 = array("01","03","05","07","08","10","12"); // MONTHS WITH 31

需要这方面的帮助,请选择堆垛机。工作到一定程度,但陷入内循环并超时。显示所选月份的天数,我需要签入数据库,并使用其他类突出显示包含数据的天数

我知道有一些类似的脚本,但这是响应性的,在sqlite上运行,不使用表

这就是我得到的:

#############################################################
$months31 = array("01","03","05","07","08","10","12"); // MONTHS WITH 31 DAYS
if($_SESSION['m'] == 02): // IF FEBRUARY
$daysinmonth = cal_days_in_month (CAL_GREGORIAN , $_SESSION['m'] , $_SESSION['y']); // CHECK DAYS IN FEBRUARY AND CHECK FOR LEAP YEAR
elseif(in_array($_SESSION['m'],$months31 )): // IF IN ARRAY OF MONTHS WITH 31 DAYS
$daysinmonth = 31; // DAYS IN MONTH = 31
else:
$daysinmonth = 30;  // DAYS IN MONTH = 30
endif; 
   ########## ADD DAYS OF SELECTED MONTH ############
$d = 1;
$day = $d ;
$selectedmonth = $_SESSION['m'];
$selectedyear = $_SESSION['y']; 
##################################################
while($d <= $daysinmonth):
####################### GET DATA FROM DATABASE FOR SELECTED YEAR AND MONTH #################
$calshow = $caldb->query("SELECT day FROM calandar WHERE month = '$selectedmonth' AND year = '$selectedyear' ");
foreach($calshow as $cal):
$showday = $cal['day'];


############   HIGHLIGHTS CURRENT DAY ############
if($d == $curday && $_SESSION['m']== $curmonth && $_SESSION['y'] == $curyear):
$today = 'sel'; 
else:
 $today = ''; 
 endif; ?>


<a href="####">
  <li class="day <?php echo $today;?><?php if($showday == $d): echo 'data'; endif;?>"><?php echo $d++;?></li></a>
<?php endforeach; 
endwhile;?>
这就是你的问题:

while($d <= $daysinmonth):

或者,您可能需要在foreach循环中重置并增加$d。

万岁!!!在db中有一个时间戳为y-m-d的行,然后进行行计数 对于当月带有日期戳的记录 因为我使用的是SQLITE和PDO,所以我需要使用$rows=$calshow->fetchAll; 并使用count$行进行查询!=0-当你知道怎么做时,简单-

这里的工作脚本,如果它对任何有相同问题的人有用的话,请详细记录

$day = $d ;
##################################
while($d <= $daysinmonth):
$selectedmonth = $_SESSION['m'];
$selectedyear = $_SESSION['y'];
$datestamp = $selectedyear.'-'.$selectedmonth.'-'.$d;
### check if there are appointments ###
$calshow = $caldb->query("SELECT datestamp FROM calandar WHERE datestamp = '$datestamp' AND month = '$selectedmonth' AND year = '$selectedyear'");
$rows = $calshow ->fetchAll(); // COUNT ROWS WHICH MATCH DATESTAMP QUERY

### GET DATA FROM DATABASE FOR SELECTED YEAR AND MONTH ###
if($d == $curday && $_SESSION['m']== $curmonth && $_SESSION['y'] == $curyear &&  count($rows)!= 0):
$daycss = 'tdyes';
elseif ($d == $curday && $_SESSION['m']== $curmonth && $_SESSION['y'] == $curyear):
$daycss = 'tdno';
elseif (count($rows) != 0):
$daycss = 'dyes';
else:
$daycss = 'dno';
endif;
### echo count($rows); ?> 

<a href="?sh=k&ds=<?php echo $_SESSION['y']."-". $_SESSION['m']."-". $d?>&m=<?php echo $_SESSION['m'];?>&y=<?php echo $_SESSION['y'];?>"><li class="day <?php echo $daycss;?>"><?php echo $d;?></li></a>
<?php  $d++; endwhile; ?>

上面设置的月份天数:感谢Jeroen的回复,在上面尝试过,但没有成功,是我的错,我现在没有添加完整的源代码
$day = $d ;
##################################
while($d <= $daysinmonth):
$selectedmonth = $_SESSION['m'];
$selectedyear = $_SESSION['y'];
$datestamp = $selectedyear.'-'.$selectedmonth.'-'.$d;
### check if there are appointments ###
$calshow = $caldb->query("SELECT datestamp FROM calandar WHERE datestamp = '$datestamp' AND month = '$selectedmonth' AND year = '$selectedyear'");
$rows = $calshow ->fetchAll(); // COUNT ROWS WHICH MATCH DATESTAMP QUERY

### GET DATA FROM DATABASE FOR SELECTED YEAR AND MONTH ###
if($d == $curday && $_SESSION['m']== $curmonth && $_SESSION['y'] == $curyear &&  count($rows)!= 0):
$daycss = 'tdyes';
elseif ($d == $curday && $_SESSION['m']== $curmonth && $_SESSION['y'] == $curyear):
$daycss = 'tdno';
elseif (count($rows) != 0):
$daycss = 'dyes';
else:
$daycss = 'dno';
endif;
### echo count($rows); ?> 

<a href="?sh=k&ds=<?php echo $_SESSION['y']."-". $_SESSION['m']."-". $d?>&m=<?php echo $_SESSION['m'];?>&y=<?php echo $_SESSION['y'];?>"><li class="day <?php echo $daycss;?>"><?php echo $d;?></li></a>
<?php  $d++; endwhile; ?>