2012-08-07 70 views
0

後,我有這樣的代碼:

<?php 
if (isset($_POST['decrease_date'])) { 
    $monday_value = ($_SESSION['sess_mon'] = strftime("%Y-%m-%d", strtotime("{$_SESSION['sess_mon']} -1 day"))); 
} 
if (isset($_POST['increase_date'])) { 
    $monday_value = ($_SESSION['sess_mon'] = strftime("%Y-%m-%d", strtotime("{$_SESSION['sess_mon']} +1 day"))); 
} 
else { 
    $monday_value = ($_SESSION['sess_mon'] = date('Y-m-d', strtotime('Monday this week'))); 
} 
?> 

<form action='absence.php' method='post'> 
<input type="hidden" name="decrease_date"/> 
<input type='submit' value='Previous'> 
</form> 

<form action='absence.php' method='post'> 
<input type="hidden" name="increase_date"/> 
<input type='submit' value='Next'> 
</form> 

正如你可以看到我想要使用的增加/減少的日期,商店的形式和會議這在一個變量中。

現在我想刷新頁面,但保持了刷新請求之前已經激活的會話值。現在它會減少或增加取決於提交的表單,因爲我沒有PRG格式。

我可以把表單提交到另一個文件,但我需要的

else { 
$monday_value = ($_SESSION['sess_mon'] = date('Y-m-d', strtotime('Monday this week'))); 
} 

因爲每當用戶第一次進入該頁面的值應該顯示「本週星期一」。

你怎麼會建議我做什麼?

回答

1

只是檢查$_SESSION['sess_mon']太:

if(!empty($_SESSION['sess_mon'])) 
{ 

    if (!empty($_POST['decrease_date'])) 
    { 
     $monday_value = $_SESSION['sess_mon'] = strftime("%Y-%m-%d", strtotime("{$_SESSION['sess_mon']} -1 day")); 
    } 
    elseif (!empty($_POST['increase_date'])) 
    { 
     $monday_value = $_SESSION['sess_mon'] = strftime("%Y-%m-%d", strtotime("{$_SESSION['sess_mon']} +1 day")); 
    } 
} 

// EDIT: new if-branch instead of else 
if(empty($monday_value)) 
{ 
    $monday_value = $_SESSION['sess_mon'] = date('Y-m-d', strtotime('Monday this week')); 
} 
+0

嗯,似乎並沒有工作。我得到'注意:未定義的變量:monday_value'形式提交後 – David 2012-08-07 08:29:25

+0

@大衛代碼更新中... – feeela 2012-08-07 08:31:02

+0

謝謝的,但我不認爲這就是我要找的。 Allthough我沒有讓你的代碼工作,我會假設用戶仍然會從瀏覽器收到一條消息:「你想再次發送POST數據嗎?」但我希望在沒有用戶注意的情況下刷新頁面。 – David 2012-08-07 08:36:01

1

你應該嘗試重定向頁面你提高後/減少日期:

if (isset($_POST['decrease_date'])) { 
    $monday_value = ($_SESSION['sess_mon'] = strftime("%Y-%m-%d", strtotime("{$_SESSION['sess_mon']} -1 day"))); 
    header("Location: http://" . $_SERVER['SERVER_NAME'] . "/absence.php"); 
} 

這樣,在刷新頁面不會重新發表時間。

此外,您應該分開檢查以查看會話變量是否從其他if s設置,因爲否則該值將被重置,每個請求也不會增加或減少。

if(!isset($_SESSION['sess_mon'])) { 
    $monday_value = ($_SESSION['sess_mon'] = date('Y-m-d', strtotime('Monday this week'))); 
} 
else { 
    $monday_value = $_SESSION['sess_mon']; 
} 
+0

這部分是我想要的。每當用戶進入該頁面時,即當用戶點擊「缺席」鏈接時,值應該被重置。然後在該頁面上,用戶應該能夠增加/減少日期。然後如果他/她離開並回來。值應該重置。這就是爲什麼我不認爲上面的代碼會有很大的區別:(但是,無論如何,謝謝! – David 2012-08-07 09:21:48