2013-12-11 150 views
0

確定基本上我試圖比較今天的日期與數據庫日期,並確定是否今天日期>然後在數據庫中的日期之一。但無論從數據庫<或>與今天相比,結果總是如此。PHP比較日期

可能有人認罪看看我的代碼,並指出任何潛在的不法行爲,請

PHP

$timestamp = date("Y-m-d"); 

$sql="SELECT enddate FROM campaigns WHERE id=".$data['camp']; 
    $query = mysqli_query($db, $sql); 

while($result = mysqli_fetch_assoc($query)){ 
    if($timestamp > $result){ 

     echo "<script type='text/javascript'>alert('This Workshop Has Expired');</script>"; 
     exit; 
    }else{ 

     echo "<script type='text/javascript'>alert('Thank You For Registering');</script>"; 
     exit; 
    } 
} 
+0

在你的數據庫,你怎麼儲存「結束日期」?你應該真的用時間戳,看看你如何讓你'$ timestamp' var我猜你不會。 – James

+0

if($ timestamp> $ result){??如何知道它是一個「約會」的PHP?使用strtotime轉換爲整數,然後驗證。在現實生活中應用程序使用日期時間類。 – Stewie

回答

1
if($timestamp > $result['enddate']){ 

$結果是一個數組,作爲所謂的由$result = mysqli_fetch_assoc($query)。 mysqli_fetch_assoc返回一個數組,其中列的行名稱爲鍵,每個字段的內容爲值。

+0

owww loool它的工作原理,但當我做了每個變量$ timestamp和$結果var_dump數字看起來正確,並對應於數據庫和今天的日期,如果這是一個蹩腳的問題,但你能解釋爲什麼我需要添加$結果['enddate'] – Tomazi

3

嘗試,例如:

$var = "2010-01-21 00:00:00.0"//date from DB 
strtotime($var); 

它把它變成一個時間值,以及:

time() - strtotime($var); 

給你秒,因爲$var

要檢查是否$var已內最後一天嘗試:

if((time()-(60*60*24)) < strtotime($var)) 

就這樣! :)

+0

嘿這兩種格式都是一樣的yyyy-mm-dd, – Tomazi

+0

和是的,我已經嘗試var_dump兩種格式看起來都一樣,以及我試過strtotime這個問題似乎是在我的如果說法,但謝謝你試圖提供幫助 – Tomazi

0

你應該如下改變你的if語句:

if(strtotime("now") > strtotime($result['enddate'])){ 
1

的問題是,在「結束日期」從你的數據庫是不是一個數字,它是一個字符串。

你應該把它轉換爲數字:

$now = time(); 
$sql="SELECT enddate FROM campaigns WHERE id=".$data['camp']; 
$query = mysqli_query($db, $sql); 
while($result = mysqli_fetch_assoc($query)){ 
    $db = strtotime($result); 
    if($now > $db) { 
     // expired 
     echo "<script type='text/javascript'>alert('This Workshop Has Expired'); </script>"; 
     exit; 
    } 
    else { 
     // not expired 
     echo "<script type='text/javascript'>alert('Thank You For Registering');</script>"; 
     exit; 
    } 
}