2012-12-24 89 views
-1

感謝大家給我的一些建議和答案。由於我對此很陌生,因此我必須爲一些不好的問題和技術術語進行道歉。我決定使用DREAMWEAVER來完成這個,但仍然有一些問題。 這些是我所做的更改:PHP with DATE_ADD does not work

1.更改「EXPIRY_DATE」字段因爲空當我提交表單與「NOT NULL」它沒有打通(expiry_date DATE NULL)。

2.本是代碼我有

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) 
{ 
    $template = "INSERT INTO expirydate_table " 
       . "(firstname, lastname, email, password, " 
       . "signup_date, expiry_date) " 
       . "VALUES (%s, %s, %s, %s, %s, %s)"; 

    $insertSQL = sprintf(
     $template, 
     GetSQLValueString($_POST['firstname'], "text"), 
     GetSQLValueString($_POST['lastname'], "text"), 
     GetSQLValueString($_POST['email'], "text"), 
     GetSQLValueString($_POST['password'], "text"), 
     GetSQLValueString($_POST['signup_date'], "date"), 
     GetSQLValueString($_POST['expiry_date'], "date") 
    ); 

3.形式與 'signup_date' 和 'EXPIRY_DATE' 的隱藏的Fileds

<input type="hidden" name="signup_date" value="<?php echo $row_RecRegister3['NOW()']; ?>"> 
<input type="hidden" name="expiry_date" value="<?php echo $row_RecRegister3['DATE_ADD(NOW() , INTERVAL 30 DAY))']; ?>"> 
<input type="hidden" name="MM_insert" value="form1"> 

結果:

  1. 我可以提交表格和signup_date顯示在數據庫中。
  2. expiry_date沒有顯示任何數據。

問:

  1. 有什麼功能,使工作或更換 'DATE_ADD(NOW(),間隔30天)'?

回答

0

根據你上面的例子:

  • 表單使用作爲signup_date = NOW()(MySQL的功能)和失效日期是之後的30天。
  • 您的PHP代碼片段是爲MySQL創建插入語句的代碼片段。

您不需要通過表單發送signup_date和失效日期。你所要做的就是在你的insert語句中設置它。

所以你的形式將是:

<input type="hidden" name="MM_insert" value="form1"> 

和你的PHP

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) 
{ 
    $template = "INSERT INTO expirydate_table " 
       . "(firstname, lastname, email, password, " 
       . "signup_date, expiry_date) " 
       . "VALUES (%s, %s, %s, %s, %s, %s)"; 

    $now  = new DateTime(); 
    $signup = $now->format('Y-m-d H:i:s'); 
    $future = $now->add(new DateInterval('P30D')); 
    $expiry = $future->format('Y-m-d H:i:s'); 

    $insertSQL = sprintf(
     $template, 
     GetSQLValueString($_POST['firstname'], "text"), 
     GetSQLValueString($_POST['lastname'], "text"), 
     GetSQLValueString($_POST['email'], "text"), 
     GetSQLValueString($_POST['password'], "text"), 
     $signup, 
     $expiry 
    ); 
} 
+0

我發現這個編輯後: 致命錯誤:調用未定義的方法日期時間::加()上線49 這是 - $ future = $ now-> add(new DateInterval('P30D')); 請幫我解決這個問題!非常感謝。 –

+0

@patmuumai可能是因爲你沒有使用PHP 5.3或更高版本。看看這個:http://php.net/manual/en/datetime.add.php。有mktime,時間和日期,您可以用來計算註冊和過期日期的替代品。 –