使用 PHP 使用两个日期字段和当前月份选择表条目
Posted
技术标签:
【中文标题】使用 PHP 使用两个日期字段和当前月份选择表条目【英文标题】:Using PHP to select table entries using two date fields and current month 【发布时间】:2011-08-09 04:55:29 【问题描述】:请帮助新手。我有一个名为 event_calendar 的表,其中包含名为 ec_start_date、ec_end_date 和 ec_event_name 的字段。前两个字段是日期字段。这是一个小表,只有不到 100 个条目。我想列出当月开始或结束日期的事件,然后我想列出下个月开始或结束日期的事件列表。这两个列表将以月份名称为首。我希望列表中显示的日期采用 dd/mm 格式。
这是我找到的用于识别列表标题月份的代码。
$thismonth = mktime(0,0,0,date("n"));
$nextmonth = mktime(0,0,0,date("n")+1);
echo "<h2 class='caps'>";
echo date("n", $thismonth);
echo "</h2>";
echo "<h2 class='caps'>";
echo date("m", $nextmonth);
echo "</h2>";
这是我用来提取本月(8 月)活动条目的代码
$query = "SELECT ec_display,ec_event_name,ec_start_date,ec_end_date FROM event_calendar WHERE month(ec_start_date) = 8 OR month(ec_end_date) = 8 ORDER BY ec_start_date";
问题是,如果我用变量 $thismonth 替换数字 8,它会失败。
最后,如何仅显示 ec_start_date 和 ec_end_date 中的 dd/mm?
非常感谢任何指导,但请具体说明,因为我对此很陌生!谢谢!
【问题讨论】:
如果将 8 替换为 $thismonth 会产生什么错误? 【参考方案1】:$thismonth
包含由mktime
返回的 UNIX 时间戳。今年第 8 个月 0 时 0 分 0 秒 0 的时间戳是 1312862400。那不是 8。
不要把它放在你的查询中,把 date('n')
(8) 放在里面......或者让 mysql 去做
$query = "SELECT ec_display,ec_event_name,ec_start_date,ec_end_date FROM event_calendar WHERE month(ec_start_date) = MONTH(CURRENT_DATE) OR month(ec_end_date) = MONTH(CURRENT_DATE) ORDER BY ec_start_date";
【讨论】:
哇,丹,感谢您的快速回复!您的建议效果很好,如何使用 month(current_date) 提取下个月的列表? 试试MONTH(CURRENT_DATE + INTERVAL 1 MONTH)
。
像魅力一样工作!我非常激动,因为我非常感谢您的帮助。
我可以再要求一件事吗?如何仅显示 ec_start_date 和 ec_end_date 的月份和日期?
在您的 php 代码中从查询中检索到行后,您可以使用 date
来设置您想要的日期格式,就像您之前对月份数字所做的那样。例如,echo date('F jS', strtotime($row['ec_start_date']));
得到类似“8 月 9 日”的信息。以上是关于使用 PHP 使用两个日期字段和当前月份选择表条目的主要内容,如果未能解决你的问题,请参考以下文章