【问题标题】:Previous and next month report上个月和下个月的报告
【发布时间】:2014-03-28 06:59:33
【问题描述】:

我有一张表格,其中包含日期、时间、地点、文本。

现在它将报告当前年份和月份。

我正在尝试创建 3 个按钮,它们将从数据库创建报告。

  1. 按钮将报告上个月
  2. 按钮将报告实际月份
  3. 按钮将在下个月报告

但问题是当我点击上个月或下个月时,它只会报告当月的上个月和下个月。所以我正在寻找某种跟踪日期。

示例:

3 月(当前)->(按下下个月按钮)= 4 月 ->(按下下个月按钮)= 5 月 ... 等等

三月(当前)->(按下上个月按钮)= 二月 ->(按下上个月按钮)= 一月

+ if is pressed next month when is DECEMBER 2013 reported then it must be new YEAR with january

+ same condition when backwards (January 2014 ->(previous button) = december 2013)

有什么办法吗?

SELECT hlavni.datum_expirace, hlavni.priloha, hlavni.nazev, vedle.misto
FROM hlavni
INNER JOIN vedle ON hlavni.sekce = vedle.idecko WHERE vedle.idecko IN ( 6, 7, 8, 15, 14,
16, 17 ) AND YEAR( datum_expirace ) = YEAR( CURDATE( ) ) AND MONTH(datum_expirace) =
MONTH( CURDATE( ) ) ORDER BY `hlavni`.`datum_expirace` ASC, `hlavni`.`priloha` ASC");

【问题讨论】:

  • 不要使用 MONTH( CURDATE( ) ),而是将所需月份作为参数传递给查询。
  • 对不起,我不明白。我对这件事还是很陌生^^。你能给我解释一下你的意思吗?
  • 你用AJAX调用吗?

标签: php mysql sql date


【解决方案1】:

看看下面的登录:你可以试试你的修改: 你可以把它作为你的参考:

take one hidden field store in it current date:
<input type="hidden" name="date" value="<?php echo date('Y-m-01'); ?>" />

If you click On any of your three option pass type of it at submit time.
Now when you submit for Next,Previous,Current Month you need to check:

if ($_POST['type'] == 'previous') 
{
    $date = date('Y-m-d', strtotime("-1 month", strtotime($_POST['date'])));
} else if ($_POST['type'] == 'next') {
    $date = date('Y-m-d', strtotime("+1 month", strtotime($_POST['date'])));
} else {
    $date = $_POST['date'];
}

 $start_date = date('Y-m-d', strtotime("-1 year", strtotime('+1 month', strtotime($date))));
 $end_date = date('Y-m-01', strtotime($date));
 $end_date = date('Y-m-d', strtotime('-1 second', strtotime('+1 month', strtotime($matrix_e_date_no))));


 $loop_start_date = strtotime($start_date);
 $loop_end_date = strtotime($end_date);


 while ($loop_start_date < $loop_end_date) {

 //Print your html content here    
 $loop_start_date = strtotime(date('Y-m-d', strtotime('+1 month', $loop_start_date)));
 }

$set_date_again_in_hidden_field = date('Y-m-01', strtotime($date));

【讨论】:

  • 我仍然无法使其进入功能状态:/
  • 您只需要专注于这段代码,尝试理解,并进行必要的修改。
  • 求你给个提示^^我还是个mysql新手
【解决方案2】:

您可以使用以下内容 假设日期格式为 yyyy-mm-dd

上个月 SELECT * FROM table WHERE MONTH(date_created) = MONTH(date_created - INTERVAL 1 MONTH)

下个月 SELECT * FROM table WHERE MONTH(date_created) = MONTH(date_created + INTERVAL 1 MONTH)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 2012-07-02
    • 1970-01-01
    相关资源
    最近更新 更多