2012-08-02 42 views
0

下面的代码将增加/减少一周1: (是的,我的应用程序需要的值存储在一个$_SESSION

if (isset($_POST['decrease'])) { 
    $week_value = ($_SESSION['sess_week'] = $_SESSION['sess_week']-1); 
} 
else if (isset($_POST['increase'])) { 
    $week_value = ($_SESSION['sess_week'] = $_SESSION['sess_week']+1); 
} 
else { 
    $week_value = ($_SESSION['sess_week'] = date('W')); 
} 

echo $week_value; 

不过。我想在第52周(新的一年)重置,我该怎么做?我是编程新手。

回答

1
if (isset($_POST['decrease'])) { 
    $week_value = $_SESSION['sess_week'] == 1 ? 52 : --$_SESSION['sess_week']; 
} 
else if (isset($_POST['increase'])) { 
    $week_value = $_SESSION['sess_week'] == 52 ? 1 : ++$_SESSION['sess_week']; 
} 
else { 
    $week_value = ($_SESSION['sess_week'] = date('W')); 
} 
+0

感谢大家的快速回复。我使用@xdazz代码。它像一个魅力一样工作! – David 2012-08-02 08:39:32

1

您可以使用date("W")函数获取当前时间的星期编号。第1周,简单地将它设置为1(或者如果您从那里开始,则为0)。

您可以使用mktime()作为日期函数中的第二个参数进行测试,以验证输出。

<?php 

    if (date("W")==1) 
    { 
     $week_value =1; 
    } 
    else 
    { 
     if (isset($_POST['decrease'])) { 
      $week_value = ($_SESSION['sess_week'] = $_SESSION['sess_week']-1); 
     } 
     else if (isset($_POST['increase'])) { 
      $week_value = ($_SESSION['sess_week'] = $_SESSION['sess_week']+1); 
     } 
     else { 
      $week_value = ($_SESSION['sess_week'] = date('W')); 
     } 
    } 

?> 
-1

试试这个:

if($week_value == 52)$week_value = 0; 
+1

如果此人未登录这可能无法正常工作一会儿。 – Fluffeh 2012-08-02 08:27:23

1

一种可能做到这一点如下。 (我认为你的意思是,如果一周超过52,它应该是1.此外,我加 ,如果一周下降到1以下,它应该再次52,因此是去年的最后一周)。

if (isset($_POST['decrease'])) 
{ 
    $week_value=$_SESSION['sess_week']-1; 
} 
else 
{ 
    if (isset($_POST['increase'])) 
    { 
      $week_value=$_SESSION['sess_week']+1; 
    } 
    else 
    { 
      $week_value=date('W'); 
    } 
} 

if ($week_value>52) 
{ 
    $week_value=1; 
} 
else 
{ 
    if ($week_value<1) 
      $week_value=52; 
} 
$_SESSION['sess_week']=$week_value; 
0

待办事项模(%)与52

这样,你能保证你一周将始终小于52