2014-05-05 13 views
0

我有訂單(主)和測試(子)表。主表具有「target_date」字段。我想阻止用戶在主記錄中的target_date過期後在子表(Test)中添加新記錄。我使用下面的代碼進行測試以重定向到另一個頁面,但沒有運氣。如何在失效日期後將用戶重定向到另一頁php

我剛剛創建了一個沒有「添加按鈕」的原始子表的視圖表,並使用此表在過期日期後從原始子表重定向。

我把這段代碼放在child_listpage上:Before Process事件。它應該可以工作,但是有些原因它不適用。當用戶單擊主記錄頁上的原始子(Test)錶鏈接時,如果主表上的target_date已過期,則它應該重定向到child_view頁面。

我將不勝感激您的幫助。提前致謝。

function BeforeProcessList(&$conn, &$pageObject) 
{ 
    $target_date = "05-01-2014"; 

    if($target_date == date("m-d-Y",time())) 
    { 
     header("Location: testview_list.php"); 
     exit(); 
    } 
} 
+0

你'if'語句檢查與''==,所以代碼只會在確切的日期,沒有任何日期運行之後。 – IMSoP

+0

感謝收穫。我將'=='更改爲'<=',但這不起作用。 – Kortoa

回答

0

這可能會幫助你

function BeforeProcessList(&$conn, &$pageObject) 
{ 
    $target_date = new DateTime("05-01-2014"); 
    $today = new DateTime(); 
    if((int)$target_date->diff($today)->format('%r%a') >= 0) 
    { 
     header("Location: testview_list.php"); 
     exit(); 
    } 
} 
+0

這一個甚至沒有重定向,而是卡住了。再次感謝。 – Kortoa

+0

是的,但是這將解決你的問題,比較你只是比較日期等於不大於;別客氣。我也改變了我的錯誤,從'<=' to '> =' – Javad

0

首先,與==比較是永遠只打算讓重定向發生在一個確切的日期。其次,而不是當前日期轉換爲字符串,要日期轉換您的目標到時間戳,所以你可以做數學比較吧:

// Note changed date format, just to be unambiguous 
// I'm guessing you meant May 1st not Jan 5th 
$target_date = "2014-05-01"; 

if (strtotime($target_date) <= time()) { 
    // etc 
} 

或者,你可以使用DateTime objects,在大致相同的方式:

$target_date = "2014-05-01"; 

if (new DateTime($target_date) <= new DateTime()) { 
    // etc 
} 
+0

它不工作太。謝謝 – Kortoa

+0

這兩個if語句都適用於我:http://3v4l.org/edhCS http://3v4l.org/eGsJ3如果您還有其他問題,則需要單獨調試這些語句。 – IMSoP

相關問題