【发布时间】:2015-11-24 16:36:22
【问题描述】:
我有下一个和上一个按钮,用于获取下一个和上一个月份的总天数。我在获取下一个月和上一个月没有问题,但在获取下一个和上一个总日时有问题。
场景一:用户点击下一步按钮,页面会显示下个月的总天数(这里没问题)
场景2:用户点击上一页按钮,页面会显示上个月的总天数(这里没问题)
场景 3:用户单击下一步按钮,页面将显示下个月的总天数(这里没问题..)(但是..)用户单击下一步按钮然后单击上一个按钮后,它将显示上一个错误的总天数月。
场景 3 的示例:当月“11 月”的总天数为 30,下个月 12 月的总天数为 31。如果用户单击下一步按钮将转到下个月,则页面将显示总天数 31。但是当用户点击返回当前月份的上一个按钮时,页面显示错误的总天数,即 31。应该是 30。
代码:
<?php
session_start();
include 'theme-head.php';
include 'theme-header.php';
$currentmonth = date('m');
$currentyear = date("Y");
$currentyeartotday = date('t');
$months = array('January','February','March','April','May','June','July','August','September','October','November','December');
//$years = array('2010','2011','2012','2013','2014','2015','2016','2017','2018','2019','2020');
//sets initial value of SESSION variables to current month, year and total day
if(!isset($_SESSION['month'])){
$_SESSION['month'] = $currentmonth;
}
if(!isset($_SESSION['year'])){
$_SESSION['year'] = $currentyear;
}
if(!isset($_SESSION['totalday'])){
$_SESSION['totalday'] = $currentyeartotday;
}
//increments or decrements year month and totalday based on user input
if(isset($_POST['NextMonth'])){
if ($_SESSION['month']+1 == 13){
++$_SESSION['year'];
}
$_SESSION['month'] = ($_SESSION['month']+1 < 13) ? ++$_SESSION['month'] : 1;
$_SESSION['ic'] = isset($_SESSION['ic']) ? ++$_SESSION['ic'] : 1;
$ic1 = $_SESSION['ic'];
$_SESSION['totalday'] = date('t', strtotime("+$ic1 month ", strtotime($_SESSION['year'])));
}else{
unset($_SESSION['ic']);
}
if(isset($_POST['LastMonth'])){
if($_SESSION['month']-1 == 0){
--$_SESSION['year'];
}
$_SESSION['month'] = ($_SESSION['month']-1 > 0) ? --$_SESSION['month'] : 12;
$_SESSION['dc'] = isset($_SESSION['dc']) ? ++$_SESSION['dc'] : 1;
$dc1 = $_SESSION['dc'];
$_SESSION['totalday'] = date('t', strtotime("-$dc1 month ", strtotime($_SESSION['year'])));
}
else{
unset($_SESSION['dc']);
}
//current year month and totalday based on user input
if(isset($_POST['Today'])){
$_SESSION['year'] = $currentyear;
$_SESSION['month'] = $currentmonth;
$_SESSION['totalday'] = $currentyeartotday;
}
//print_r($_SESSION); //uncomment to keep tabs on your variables
?>
<div class="col-md-2">
<input type="text" placeholder="date month year" readonly>
</div>
<div class="col-md-9">
<div class="well">
<form method="post">
<button class="fa fa-chevron-circle-left btn-primary btn btn-xs" name="LastMonth" type="submit"></button>
<button class="fa fa-chevron-circle-right btn-primary btn btn-xs" name="NextMonth" type="submit"></button>
<?php
if(isset($_POST['NextMonth'])){
?>
<button class="btn-primary btn btn-xs" name="Today" type="submit">this month</button>
<?php }
elseif (isset($_POST['LastMonth'])) {
?>
<button class="btn-primary btn btn-xs" name="Today" type="submit">this month</button>
<?php }
else{
?>
<button class="btn-primary btn btn-xs" name="Today" type="submit" disabled>this month</button>
<?php }?>
<div class="pull-right">
<h2><?php echo ''. $months[$_SESSION['month']-1] .' '. $_SESSION['year'].''?></h2> <?php echo''. $_SESSION['totalday'] .' ' ?>
</div>
</form>
</div>
</div>
当用户单击下一个按钮然后单击上一个按钮时,我对如何获取确切的总天数没有任何逻辑。
我知道也许应该使用 IF 语句来解决这个问题,但是关于如何使用 IF 语句的逻辑仍然没有这个想法。
【问题讨论】:
标签: php date session if-statement