将值if语句传递给另一个if语句PHP

vcudknz3  于 2023-06-21  发布在  PHP
关注(0)|答案(1)|浏览(132)

在我的系统中有一个日历,在日历的顶部有两个按钮,下一个和上一个,这是获得下一个月,一年和上一个月,一年。现在的月份是2015年11月。我想要的是,如果我点击下一步按钮,那么它将转到下一个月2015年12月,如果我点击上一个按钮,那么它将返回到当前月份,即2015年11月。现在发生的是,如果我点击下一个按钮,那么月份是2015年12月,但如果我点击上一个按钮,月份是2015年10月[从当前月份(2015年11月)递减1,但不是从2015年12月递减1]
有办法解决吗?
我唯一的想法是将值从第一个语句(isset($_POST['next)']))传递到第二个if语句(isset($_POST['previous)']))
这是我的PHP代码:

/*increment decrement day month year with different format. check it*/
$CurrentMonthyyyymm = date('Y-m');
$month_year_Current =  date('F Y');  
$totday = date('t');

$totdayLastMonth= date('t', strtotime("-1 month", strtotime($CurrentMonthyyyymm)));      // eg: 31
$totdayNextMonth= date('t', strtotime("+1 month ", strtotime($CurrentMonthyyyymm)));

$month_year_Last = date('F Y', strtotime("-1 month", strtotime($CurrentMonthyyyymm)));   // eg: December 2014
$month_year_Next = date('F Y', strtotime("+1 month", strtotime($CurrentMonthyyyymm)));

$LastMonthyyyymm= date('Y-m', strtotime("-1 month", strtotime($CurrentMonthyyyymm)));    // eg: 2014-12
$NextMonthyyyymm= date('Y-m', strtotime("+1 month ", strtotime($CurrentMonthyyyymm)));

/****** day month year next previous   *****/
if (isset($_POST['next']))
 {
  $_SESSION['i'] = isset($_SESSION['i']) ? ++$_SESSION['i'] : 1;
  $increment1 = $_SESSION['i'];

  $totday= date('t', strtotime("+$increment1 month ", strtotime($CurrentMonthyyyymm)));
  $month_year_Next = date('F Y', strtotime("+$increment1 month", strtotime($CurrentMonthyyyymm)));
  $NextMonthyyyymm= date('Y-m', strtotime("+$increment1 month ", strtotime($CurrentMonthyyyymm)));
}else{
  unset($_SESSION['i']);
}

// $NextMonthyyyymm; 
if (isset($_POST['previous'])) 
{
   $_SESSION['d'] = isset($_SESSION['d']) ? ++$_SESSION['d'] : 1;
   $decrement1 = $_SESSION['d'];

   $totday= date('t', strtotime("-$decrement1 month ", strtotime($CurrentMonthyyyymm)));
   $month_year_Last = date('F Y', strtotime("-$decrement1 month", strtotime($CurrentMonthyyyymm)));
   $LastMonthyyyymm= date('Y-m', strtotime("-$decrement1 month", strtotime($CurrentMonthyyyymm)));
}else{
unset($_SESSION['d']);
}
jvlzgdj9

jvlzgdj91#

要解决上一个按钮错误地减少月份的问题,需要修改代码中的逻辑。您可以使用当前月份和年份直接计算上一个月和下一个月,而不是递增和递减会话变量。
以下是PHP代码的更新版本:

$CurrentMonthyyyymm = date('Y-m');
$month_year_Current = date('F Y');
$totday = date('t');

$totdayLastMonth = date('t', strtotime("-1 month", strtotime($CurrentMonthyyyymm))); // eg: 31
$totdayNextMonth = date('t', strtotime("+1 month", strtotime($CurrentMonthyyyymm)));

$month_year_Last = date('F Y', strtotime("-1 month", strtotime($CurrentMonthyyyymm))); // eg: December 2014
$month_year_Next = date('F Y', strtotime("+1 month", strtotime($CurrentMonthyyyymm)));

$LastMonthyyyymm = date('Y-m', strtotime("-1 month", strtotime($CurrentMonthyyyymm))); // eg: 2014-12
$NextMonthyyyymm = date('Y-m', strtotime("+1 month", strtotime($CurrentMonthyyyymm)));

if (isset($_POST['next'])) {
  $NextMonthyyyymm = date('Y-m', strtotime("+1 month", strtotime($CurrentMonthyyyymm)));
  $month_year_Next = date('F Y', strtotime($NextMonthyyyymm));
  $totday = date('t', strtotime($NextMonthyyyymm));
} elseif (isset($_POST['previous'])) {
  $LastMonthyyyymm = date('Y-m', strtotime("-1 month", strtotime($CurrentMonthyyyymm)));
  $month_year_Last = date('F Y', strtotime($LastMonthyyyymm));
  $totday = date('t', strtotime($LastMonthyyyymm));
}

在这个更新的代码中,当单击Next按钮时,它会计算下一个月并更新必要的变量。类似地,当单击“上一个”按钮时,它会计算前一个月并相应地更新变量。这种方法避免了对会话变量的需要,并确保根据当前月份和年份正确地递增或递减月份。
请确保用此更新的代码替换现有代码的相关部分。

相关问题