2014-02-19 14 views
0

我創建了一個向數據庫發送數據的表單,所有的字段都在工作,除了日期,我認爲它是與格式有關,但我不確定如何去處理它。在MySQL中正確的POST日期到日期時間的方式

HTML

<dt>Date of Purchase</dt> 
     <dd> 
      <select id="date_of_purchase" name="entry[date_of_purchase]"> 
      <option value="">Month</option> 
      <option value="Jan">Jan</option> 
      <option value="Feb">Feb</option> 
      <option value="Mar">Mar</option> 
      </select> 
      <select id="date_of_purchase" name="entry[date_of_purchase]"> 
      <option value="">Day</option> 
      <option value="1">1</option> 
      <option value="2">2</option> 
      <option value="3">3</option> 
      <option value="4">4</option> 
      </select> 
      <select id="date_of_purchase" name="entry[date_of_purchase]"> 
      <option value="">Year</option> 
      <option value="2013">2013</option> 
      <option value="2014">2014</option> 
      <option value="2015">2015</option> 
      <option value="2016">2016</option> 
      </select> 
    </dd> 

PHP

$stmt = DB::query(Database::INSERT, 'INSERT INTO `registration` (`first_name`, `last_name`, `date_of_purchase`) VALUES (:first_name, :last_name, :date_of_purchase)');     

$stmt->param(':first_name', $post['first_name']); 
$stmt->param(':last_name', $post['last_name']); 
$stmt->param(':date_of_purchase', $post['date_of_purchase']); 
+0

您選擇覆蓋另一個。使用不同的名稱並在腳本中構建接收數據的完整日期。 – bargoras

+0

你試圖插入一個數組到一個參數?數據庫中date_of_purchase的類型是什麼? –

+0

'id's以及'name's應該是唯一的。 – Novocaine

回答

2

你應該領域

<dt>Date of Purchase</dt> 
     <dd> 
      <select id="month_of_purchase" name="month_of_purchase"> 
      <option value="">Month</option> 
      <option value="Jan">Jan</option> 
      <option value="Feb">Feb</option> 
      <option value="Mar">Mar</option> 
      </select> 
      <select id="day_of_purchase" name="day_of_purchase"> 
      <option value="">Day</option> 
      <option value="1">1</option> 
      <option value="2">2</option> 
      <option value="3">3</option> 
      <option value="4">4</option> 
      </select> 
      <select id="year_of_purchase" name="year_of_purchase"> 
      <option value="">Year</option> 
      <option value="2013">2013</option> 
      <option value="2014">2014</option> 
      <option value="2015">2015</option> 
      <option value="2016">2016</option> 
      </select> 
    </dd> 

使用不同的名稱,然後構造日期

$stmt->param(':date_of_purchase', sprintf("%d-%d-%d", $post['day_of_purchase'], $post['month_of_purchase'], $post['year_of_purchase'])); 

(我假設$信息[ 'year_of_purchase']是一樣的$ _ POST [ 'year_of_purchase'])

+0

非常感謝,我在將訂單更改爲'$ stmt-> param(':date_of_purchase',sprintf(「%d-%d-%d」,$ post ['year_of_purchase'],$ post ['month_of_purchase'],$ post ['day_of_purchase']));'因爲我數據庫中的格式是年 - 月 - 日 –

0

更改您的代碼是這樣的:

HTML

<dt>Date of Purchase</dt> 
     <dd> 
      <select id="date_of_purchase" name="entry[month]"> 
      <option value="">Month</option> 
      <option value="Jan">Jan</option> 
      <option value="Feb">Feb</option> 
      <option value="Mar">Mar</option> 
      </select> 
      <select id="date_of_purchase" name="entry[day]"> 
      <option value="">Day</option> 
      <option value="1">1</option> 
      <option value="2">2</option> 
      <option value="3">3</option> 
      <option value="4">4</option> 
      </select> 
      <select id="date_of_purchase" name="entry[year]"> 
      <option value="">Year</option> 
      <option value="2013">2013</option> 
      <option value="2014">2014</option> 
      <option value="2015">2015</option> 
      <option value="2016">2016</option> 
      </select> 
    </dd> 

PHP

$stmt = DB::query(Database::INSERT, 'INSERT INTO `registration` (`first_name`, `last_name`, `date_of_purchase`) VALUES (:first_name, :last_name, :date_of_purchase)');     

$stmt->param(':first_name', $post['first_name']); 
$stmt->param(':last_name', $post['last_name']); 
$stmt->param(':date_of_purchase', $post['month'] . $post['day'] . $post['year']); // Just an example, I am pretty sure this won't work, change it according to your database 
0

其中一種方法可能是:

//in PHP 
//first : convert and valid the INPUT 
try{ 
    $date = DateTime.CreateFromFormat("d-m-Y",$post["day"]."-".$post["month"]."-".$post['year']); 
    //then you will convert it to MySQL format : 
    $stmt = DB::query(Database::INSERT, 'INSERT INTO `registration` (`first_name`, `last_name`, `date_of_purchase`) VALUES (:first_name, :last_name, :date_of_purchase)');     

    $stmt->param(':first_name', $post['first_name']); 
    $stmt->param(':last_name', $post['last_name']); 
    $stmt->param(':date_of_purchase', $date->format("Y-m-d h:i:s"); 
}catch(Exception $e){ 
    //here re-ask the date because it is false 
} 
相關問題