2016-07-25 64 views
0

我想爲我的ecomm網站做一些促銷代碼功能。 目前我有一個名爲$ currentDate的變量,我不確定它是否是正確的格式。如何將日期時間值從mysql導出到php

$currentDate = date("Y-M-D") 

我想比較一下,在我的數據庫中稱爲expiryDate的日期。在我的數據庫中,我有一行promoCode = GSS2016(varchar),折扣= 0.1(雙倍,假設代表10%的折扣)和expiryDate = 2016-07-28(日期時間,如果我沒有錯誤,在YMD中.. )。我如果促銷碼存在,但我不能確定如何將其導出到PHP,並將其與當前的日期

$currentDate = date("Y-M-D"); 

session_start(); 

$conn = mysqli_connect("localhost", "root", "","websiteDb"); 

$promoCodeInput = $_POST['promoCode']; 

$sql = "SELECT * FROM promocodedb WHERE promoCode = '$promoCodeInput'"; 

$codeChecker = mysqli_query($conn, $sql) or die (mysqli_error($conn)); 

if (mysqli_num_rows($codeChecker) > 0) 
{ 
    $fetchDiscount = mysqli_fetch_assoc($codeChecker); 

    $expiry = $fetchDiscount['expiryDate']; 

    if ($expiry > $currentDate) 
    { 
     $discountPercentage = $fetchDiscount['discount']; 
     echo $discountPercentage; 

     $cookie_value = $discountPercentage; 
     setcookie("discount", $cookie_value, time() + (60 * 60)); //discount last for 1 hour 

     header("Location:cart.php?status=promoApplied"); 
    } 
    else 
    { 
     //header("Location:cart.php?status=promoExpired"); 
    } 
} 
else 
{ 
    header("Location:cart.php?status=promoFail"); 
} 
+0

你需要更好地解釋你想要做的事情。您發佈的代碼似乎不是很有幫助。您是否試圖查看折扣碼是否仍然有效? –

回答

0

Y-M-D產生像2016-Jul-25字符串比較已經運行一個查詢來檢查。你不能將這個可靠性與另一個字符串或甚至mysql日期/時間格式化字符串進行比較,這將是2016-07-25。比較數字/日期時,

字符串比較規則永遠不會正常工作:

php > var_dump('2016-Jul-25' > '2016-07-25'); 
bool(true) 
php > var_dump('2016-Jul-25' == '2016-07-25'); 
bool(false) 

即使這兩個版本代表相同的日期,你可以看到比較回來錯了。按字符串規則,它們是不是是同一日期。

同時,注意這一個:

php > var_dump('2016-Jul-25' > '2016-Mar-25'); 
bool(false) 

人類解析標準真的,因爲年7月在比今年三月後話,但通過字符串比較標準假的,因爲J談到早前在字母表比M ,因此Jul版本比Mar版本更小/更早。

0

您可以將所有日期時間轉換爲Unix時間戳,並將其作爲時間戳相互比較。 Unix的時間戳的秒數自1月1日1970年

爲transfering日期時間爲Unix時間戳功能是strtotime

這是很聰明的功能,可以識別多種日期時間格式。

看看PHP strtotime