繁体   English   中英

可变范围与PHP中的if else语句

[英]variable scope with if else statements in 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());
    }
}

?>

您未通过“前14天”的任何参考,该参考是根据...

本质上,在脚本中,您要计算从今天起的前14天。

有点迷失了这一节..(除非这不是全部代码)

if(($prevFlag == '' || $nextFlag == '')) {        $currentDay = date('Y/m/d'); 

从本质上讲,该代码将永远兴奋...

然后稍后您引用:

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

所以您今天要减去14天?

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

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

您必须意识到php不是有状态的语言。 您的脚本只知道您通过了什么。 如果您未将开始日期作为起始日期,则它将不知道从添加或删除14天开始。

祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM