[英]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.