Php 扩展日历功能以接受年份

Php 扩展日历功能以接受年份,php,date,calendar,Php,Date,Calendar,我在一个事件调度器站点上工作,目前我正在使用一个月表(以id&month为标题)按月对结果进行分组,这使我陷入困境。因此,如果我尝试将活动安排在2016年1月,它会成功地将活动安排到我预期的月份,但可以理解的是,它会将活动安排到2015年。 我希望得到一些帮助,在今年年底之后扩展这个功能,并为不同年份添加功能 我很乐意使用另一种方法,而不是使用我目前的表格设置,所以任何提示或建议都将不胜感激 目前的代码如下: <?php include 'includes/connect.php'; in

我在一个事件调度器站点上工作,目前我正在使用一个月表(以
id
&
month
为标题)按月对结果进行分组,这使我陷入困境。因此,如果我尝试将活动安排在2016年1月,它会成功地将活动安排到我预期的月份,但可以理解的是,它会将活动安排到2015年。 我希望得到一些帮助,在今年年底之后扩展这个功能,并为不同年份添加功能

我很乐意使用另一种方法,而不是使用我目前的表格设置,所以任何提示或建议都将不胜感激

目前的代码如下:

<?php include 'includes/connect.php';
include 'includes/header.php';
$curMonth = date("n"); ?>

<b>Upcoming Trip Information:</b><br><br>
<?php 
$res = mysql_query("SELECT * FROM months ORDER BY id");
while ($rows = mysql_fetch_array($res)) {
if($rows['id'] >= $curMonth ){

$monthname = $rows['month']; ?>
<table cellpadding="0" cellspacing="3" width="100%"> 
<tr> 
<td>
<?php 
$tid = $_GET['transporter'];
$check = mysql_query("SELECT * FROM trips WHERE monthname(start_date) = '" . $rows['month'] . "' AND tid = '$tid'");
$check = mysql_num_rows($check);
if ($check < 1) {
echo "";
} else { ?> <h2><?php echo $monthname; ?><?php } ?></h2></td></tr> <tr> <?php $cmonth = date('F');
$tid = $_GET['transporter'];
$res1 = mysql_query("SELECT * FROM trips WHERE monthname(start_date) = '$monthname' ORDER BY start_date");
while ($rows = mysql_fetch_array($res1)) {
$trid = $rows['trid'];
$trip_start = $rows['trip_start'];
$trip_end = $rows['trip_end'];
$start_date = $rows['start_date'];
$end_date = $rows['end_date'];
$colour = $rows['colour'];
$stime = strtotime($start_date);
$startt = date("l jS", $stime);
$etime = strtotime($end_date);
$endt = date("l jS", $etime); ?> 
<td valign="middle" style="height: 100px; background-color: #4b99ed; text-align: center;"> 
<div style="font-size: 17px; color: #ffffff;"><?php echo $trip_start; ?> to <?php echo $trip_end; ?></div> 
<div style="font-size: 15px; color: #ffffff;"><?php echo $startt; ?> - <?php echo $endt; ?></div> 

</td> 
<?php } } } ?> 
</tr> 
</table> <?php include 'includes/footer.php'; ?>

即将到来的行程信息:


您可以尝试使用
trips
表的
start\u date
列,而不是使用
months

尝试更改您的查询:

SELECT trips.*, DATE_FORMAT('%M, %Y', start_date) as `dt` 
FROM trips  
WHERE tid = '$tid' /* This is bad, please prepare or escape your variables*/ 
ORDER BY `dt` ASC

这样,您就不必执行第一个查询来获取所有月份并循环它们。如果每个月都必须有空容器,请尝试使用该查询,但要循环使用PHP生成的月份数组来显示。

您可以查询
“SELECT*FROM months WHERE id>=$curMonth ORDER BY id”
以减少结果集,但实际上我在这里使用的是静态数组
$months=array(“”,'一月','二月',…等等
然后你可以为每个($id=>$month)做
foreach($months){…
还可以检查一下,然后你就可以现在做
now()
并在循环中添加1个月,然后使用该日期对象进行显示,因为它将自动从12月15日到1月16日+1个月。感谢您的回复,我肯定会查找您发送给我的内容,我仍然习惯于php编码,所以这还不是第二天性:)感谢您的回复,我尝试了您的建议,但现在它只显示trips表中的第一个结果,而没有显示其他结果。请从查询中删除任何GROUP BY。感谢您解决了1个结果问题,我将深入研究它,因为现在结果按月份分开,就像以前在我的原始代码中一样。我更新我用一张图片展示了我是如何展示结果的,但显然不受年份限制:)