2016-01-19 2 views
0

Я не могу вставить дату (даже всю мою форму) в mySQL. Вот мой код:Как вставить дату в MySQL из PHP

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>"; 
    } 
} 

Я использую input type="date" в моем PHP. И вот моя таблица в базе данных: 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» еще потому 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

Ну есть так много ответов доступны связанные с вашим вопросом. Согласно вашей базе данных, ваша дата тип столбца DATE не DATETIME, так что вам нужно хранить значения в этом формате:

YYYY-MM-DD 

Как вы можете получить дату в этом формате?

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

Я думаю, что этот столбец Tanggal_Pengambilan ваш столбец DATE поэтому я использую его.

Side Примечание:

Я не уверен, что это за вход вы получаете от $_POST['tglPickup'], если его надлежащее, чем он будет работать.

+0

Да, tgl pickup - столбец даты. Я использую

+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

Надеюсь, что это поможет.

Edit: Как @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 
Смежные вопросы