php中的if else语句的变量范围

时间:2011-01-03 16:59:56

标签: php

我有以下代码。我正在尝试在同一页面中处理两个表单帖子。代码正在做的是每当用户点击“next14days”按钮时,它会显示接下来14天的数据,如果用户点击“prev14days”,它应该显示前14天的数据。这对我来说不起作用。

例如,假设当前日期是2011/01/03,我打了next14days当前日期应该是2011/01/17。这有效,但当我打到prev14days,这应该会让我回到2011/01/03,这将是2010/12/20,看起来像(2011/01/03 - 14)。

每次用户点击其中一个按钮时页面都会刷新,无论是哪种方式都无法访问IF子句中的任何内容。

<?php

if(($prevFlag == '' || $nextFlag == ''))
{   
    $currentDay = date('Y/m/d');
    $SQL4 = "Exec EmployeeVac '" . $currentDay . "'";
    $result4 = mssql_query($SQL4,$link1) or die('An error occured: ' . mssql_get_last_message());

}

if (isset($_POST['next14submit'])) 
{

    $nextFlag = 'yes';

    if($prevFlag == 'yes')
    {
        $next14 = date('Y/m/d', strtotime($prev14 . "+14 days"));
        $currentDay = $next14;
        $SQL4 = "Exec EmployeeVac '" . $currentDay . "'";
        $result4 = mssql_query($SQL4,$link1) or die('An error occured: ' . mssql_get_last_message());
    }
    else
    {
        $next14 = date('Y/m/d', strtotime($currentDay . "+14 days"));
        $currentDay = $next14;
        $SQL4 = "Exec EmployeeVac '" . $currentDay . "'";
        $result4 = mssql_query($SQL4,$link1) or die('An error occured: ' . mssql_get_last_message());
    }
} 

if (isset($_POST['prev14submit'])) 
{
    $prevFlag = 'yes';
    echo $nextFlag;
    if($nextFlag == 'yes')
    {
        $prev14 = date('Y/m/d', strtotime($next14 . "-14 days"));
        $currentDay = $prev14;
        $SQL4 = "Exec EmployeeVac '" . $currentDay . "'";
        $result4 = mssql_query($SQL4,$link1) or die('An error occured: ' . mssql_get_last_message());
    }
    else
    {
        $prev14 = date('Y/m/d', strtotime($currentDay . "-14 days"));
        $currentDay = $prev14;
        $SQL4 = "Exec EmployeeVac '" . $currentDay . "'";
        $result4 = mssql_query($SQL4,$link1) or die('An error occured: ' . mssql_get_last_message());
    }
}

?>

2 个答案:

答案 0 :(得分:0)

您没有通过“前14天”的任何参考资料来计算......

基本上,在您的脚本中,您将从今天的日期开始计算前14天。

有点丢失了这个部分..(除非这不是所有的代码)

if(($prevFlag == '' || $nextFlag == '')) {        $currentDay = date('Y/m/d'); 
基本上,该代码将始终显示...

然后您将引用:

$prev14 = date('Y/m/d', strtotime($currentDay . "-14 days"));   

所以你只是从今天开始减去14天?

答案 1 :(得分:0)

您需要在表单中包含当前日期,以便您的php脚本知道前进或后退的开始日期。

if(isset($_POST['currentDay'])){
    $currentDay = strtotime($_POST['currentDay']);
} else {
    $currentDay = date('Y/m/d');
}

你必须重新认识到php不是一种有状态的语言。您的脚本只知道您传递的内容。如果你没有把它作为开始日期传递,那么它将不知道从何处开始添加或删除14天。

祝你好运。