2016-01-19 146 views
0

我無法將日期(甚至是我的整個表單)插入mySQL。這裏是我的代碼:如何從PHP插入日期到MySQL

if($_SERVER["REQUEST_METHOD"]=="POST") 
{ 
    $con = mysqli_connect('localhost','root','','e-Laundrydb'); 
    $tglPickup = $_POST['tglPickup']; 
    $barang = $_POST['inputItems']; 
    $waktuPickup = $_POST['waktuPickup']; 

    $query_order = "INSERT INTO order(Barang,Tanggal_Pengambilan,Waktu_Pengambilan) VALUES('$barang','$tglPickup','$waktuPickup');"; 

    $result = mysqli_query($con,$query_order); 

    if($result == false) 
    { 
     echo "<script>alert('INSERT IS NOT SUCCESS');</script>"; 
    } 
    else 
    { 
     echo "<script>alert('INSERT SUCCESS');</script>"; 
    } 
} 

我在PHP中使用input type="date"。這裏是我在數據庫中的表格: Table Order

我找不到問題在哪裏。 我更新的代碼,並遵循喜歡你的建議,但仍然得到什麼:( 這裏又是代碼:

if($_SERVER["REQUEST_METHOD"]=="POST") 
{ 
    //include('config/koneksi.php'); 
    $con = mysqli_connect('localhost','root','','e-laundryDB'); 
    //INSERT KE TABLE ORDER 
    $tglPickup = date('Y/m/d', strtotime($_POST['tglPickup'])); 
    $barang = $_POST['inputItems']; 
    $waktuPickup = $_POST['waktuPickup']; 

    $query_order = "INSERT INTO 'order'(Barang,Tanggal_Pengambilan,Waktu_Pengambilan) VALUES('$barang','$tglPickup','$waktuPickup')"; 

    $result = mysqli_query($con,$query_order); 

    if($result == false) 
    { 
     echo "<script>alert('INSERT IS NOT SUCCESS');</script>"; 
    } 
    else 
    { 
     echo "<script>alert('INSERT SUCCESS');</script>"; 
    }   



mysqli_close($con); 
} 
+1

進入的日期值是什麼?如果你使用日期功能創建了表格,它不會花費時間 –

+0

對不起,我試圖指定我的問題。這裏我現在編輯它,謝謝。 –

+0

是整個表單值未被插入的問題嗎?還是隻有日期沒有被插入? –

回答

3

你要的日期格式設置爲「YYYY-MM-DD HH:ii:ss」 becasue MySQL的使用這種格式的日期。

檢查你逝去的查詢日期格式,有可能是這個問題。

感謝。

0
$query_order = INSERT INTO order(Barang,Tanggal_Pengambilan,Waktu_Pengambilan) VALUES('$barang','$tglPickup','$waktuPickup') 

INSERT order SET `Barang`='".$barang."',`Tanggal_Pengambilan`='".$tglPickup."',`Waktu_Pengambilan`='".$waktuPickup."'"; 
+0

請添加一些解釋... – devpro

0

嘗試將日期格式調整爲數據庫中的日期格式。 例如:

date('Y-m-d H:i:s'); //2016-01-19 12:48:00 
1
if($_SERVER["REQUEST_METHOD"]=="POST") 
{ 
    $con = mysqli_connect('localhost','root','','e-Laundrydb'); 
    $tglPickup = date('Y-m-d H:i:s',strtotime($_POST['tglPickup'])); 
    $barang = $_POST['inputItems']; 
    $waktuPickup = $_POST['waktuPickup']; 

    $query_order = "INSERT INTO order(Barang,Tanggal_Pengambilan,Waktu_Pengambilan) VALUES('$barang','$tglPickup','$waktuPickup');"; 

    $result = mysqli_query($con,$query_order); 

    if($result == false) 
    { 
     echo "<script>alert('INSERT IS NOT SUCCESS');</script>"; 
    } 
    else 
    { 
     echo "<script>alert('INSERT SUCCESS');</script>"; 
    } 
} 
1

那麼有可關係到你的問題,所以很多答案。根據你的數據庫,你的日期列類型是DATEDATETIME,所以你需要存儲在該格式的值:

YYYY-MM-DD 

你怎麼能在這種格式得到日期呢?

$tglPickup = date('Y-m-d',strtotime($_POST['tglPickup'])); 

我覺得這列Tanggal_Pengambilan是你DATE列,所以我使用它。

側面說明:

我不知道,你從​​得到什麼樣的投入,如果它的正確比它會奏效。

+0

是的,tgl皮卡是日期欄。我使用

+0

@GandhikaFarhan:好吧,它會工作。 – devpro

1

理想情況下,你會希望下面的日期格式:Y-m-d H:i:s

你可能想嘗試插入查詢,這種方式之前驗證格式,如果格式無效,你可以返回一個友好的錯誤信息給用戶在這一點上,而不是試圖插入,然後不容易能夠解釋出了什麼問題。

像這樣的東西應該工作:

function validDateFormat($date, $format = 'Y-m-d H:i:s') { 
    $date = DateTime::createFromFormat($format, $date); 
    if ($date === false) { 
     return false; 
    } 

    return true; 
} 

所以,你可以調用它像這樣:

$tglPickup = $_POST['tglPickup']; 

if (validDateFormat($tglPickup)) { 
    // Insert logic 
} else { 
    // Return a friendly error to the user 
} 

我相信用戶不只是輸入日期和被選擇,所以你應該有完全控制你收到的格式,但我個人總是發現編程偏執幫助:d

希望無論如何幫助。

編輯:作爲@devpro提到你正在使用Date,而不是DateTime這樣的格式,你可以簡單地刪除我提供的示例的H:i:s,或者第二個參數添加到函數調用,即

if (validDateFormat($tglPickup, 'Y-m-d')) {} 
+0

好趕上我的朋友...讚賞 – devpro

0
Convert 'd-m-Y' date format to 'Y-m-d' date format 

$tglPickup=$_POST['tglPickup']; //d-m-Y 

$tglPickup=explode('-',$tglPickup); 

$tglPickup=$tglPickup[2]."-".$tglPickup[1]."-".$tglPickup[0]; //Y-m-d