[英]Increment/Decrement variable on button - PHP Javascript
[英]get increment decrement day once clicked button
我有下一個和上一個按鈕,這是獲取下一個和上一個總日月份年份。 我沒有問題要獲得下一個和上個月,但是有問題要獲得下一個和上一個合計日。
方案1:用戶單擊“下一步”按鈕,頁面將顯示下個月的總天數(此處沒有問題)
方案2:用戶單擊上一個按鈕,頁面將顯示上個月的總天數(此處沒有問題)
情況3:用戶單擊“下一步”按鈕,頁面將顯示下個月的總天數(此處沒有問題。),但是,用戶單擊“按鈕”然后單擊“上一個”按鈕后,它將顯示錯誤的前一個月的總天數。
方案3的示例:當月'NOVEMBER'的總天數為30,下個月DECEMBER的總天數為31。如果用戶單擊next的按鈕將轉到下個月,則頁面將顯示總天數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語句的邏輯仍然沒有這個想法。
已經有日期功能可用於查找天數
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>
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.