【问题标题】:get increment decrement day once clicked button单击按钮后获取递增递减日
【发布时间】: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


    【解决方案1】:

    已经有一个日期函数可以用来查找天数

    cal_days_in_month()

    这将简化您的代码。

    让我们看看

     <?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['totalday'] = cal_days_in_month(CAL_GREGORIAN, $_SESSION['month'], $_SESSION['year']);
        }
    
        if(isset($_POST['LastMonth'])) {
          if($_SESSION['month']-1 == 0){ 
            --$_SESSION['year'];
          }
          $_SESSION['month'] = ($_SESSION['month']-1 > 0) ? --$_SESSION['month'] : 12;
          $_SESSION['totalday'] = cal_days_in_month(CAL_GREGORIAN, $_SESSION['month'], $_SESSION['year']);
        }
        //current year month and totalday based on user input
        if(isset($_POST['Today'])){
            $_SESSION['year'] = $currentyear;
            $_SESSION['month'] = $currentmonth;
            $_SESSION['totalday'] = $currentyeartotday;
        } ?>
    
        <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">Last</button>
                    <button class="fa fa-chevron-circle-right btn-primary btn btn-xs" name="NextMonth" type="submit">Next</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>
    

    谢谢

    【讨论】:

    • 非常感谢!你节省了我的时间。我试图解决这个问题一年。您只修复了此问题一分钟。非常感谢你:))@santhy
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多