ARI JULIANTO Network www.arijulianto.com

Oleh | PHP | | Dibaca 4.767 kali | 0 komentar

Kali ini saya ingin kembali berbagi mengenai manipulasi tanggal yang akan disimpan ke database MySQL. Teknik ini membantu kita karena inputan tanggal menyesuaikan dengan keinginkan kita, tidak mengikuti format baku (Y-m-d). Lebih jelasnya teknik ini akan melakukan format data dari inputan tanggal oleh user --dengan format sesuai keinginan user-- ke format baku Y-m-d (format default MySQL). Sebenernya bisa saja format tanggal di MySQL dirubah menyesuaikan dengan keinginan kita, hanya saja saya tidak menyarankan hal ini karena pasti suatu saat nanti kita butuh melakukan format ulang atau olah data dari tanggal yang ada di database untuk ditampilkan ke halaman web.

Dengan menggunakan teknik ini user bisa memasukkan format tanggal tidak harus mengukiti fomat baku, tapi bisa menyesuaikan dengan kebutuhan kita. misalnya pengen inputan tanggalnya d/m/Y atau d-m-Y atau mungkin d.m.Y. Oke daripada berlama-lama menjelasakan, mending yuk kita langsung aja pembahasannya.

Format Ulang Tanggal yang Diinput dari Form

Sekarang waktunya praktek menggunakan format tanggal dari contoh form berikut

<form action="" method="post">
Tanggal: <input type="text" name="tgl" size="12" placeholder="dd/mm/yyyy" /><br />
<input type="submit" name="proses" value="Proses" />
</form>

<?php
if(isset($_POST['proses'])){
if(trim($_POST['tgl'])!="" && preg_match("/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/", $_POST['tgl'])){
$tgl = explode("/",$_POST['tgl']);
$tanggal = $tgl[2]."-".$tgl[1]."-".$tgl[0];
echo "<p>Tanggal inputan: $_POST[tgl]<br>Tanggal proses: $tanggal</p>";
}
}
?>

Ya itu adalah salah satu cara paling mudah.... Selain cara di atas saya masih punya satu cara lagi, proses PHP-nya adalah seperti berikut

<?php
if(isset($_POST['proses'])){
if(trim($_POST['tgl'])!="" && preg_match("/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/", $_POST['tgl'])){
$tgl_target = preg_replace("/(\d{2})\/(\d{2})\/(\d{4})/","$3-$2-$1",$_POST['tgl;']);
echo "<p>Tanggal inputan: $_POST[tgl]<br>Tanggal proses: $tanggal</p>";
}
}
?>

Di teknik pertama kita memecah string inputan tanggal berdasarkan pemisah, dalam hal ini pemisahnya adalah slash ( / ). Dengan memecah berdasarkan peisah sudah bisa dipastikan bahwa kita pasti mendapatkan 3 porsi: tanggal, bulan dan tahun, jadi tekniknya adalah menggabung ulang porsi-porsi tersebut menjadi sebuah format baru yang diinginkan.

Adapun untuk teknik kedua, kita menggunakan fungsi bawaan PHP, yakni preg_replace. Dengan menggunakan fungsi ini perintah koding yang kita gunakan jauh lebih singkat dan efisien. Silahkan aja, bisa sahabat AJN liat dari script di atas, jauh lebih pendek kan?

Penanganan Tanggal dan Bulan Tanpa Nol (0) dan tahun 2 digit

Permasalahan baru lain yang mungkin bakalan muncul adalah permasalahan kalau tanggal yang kita bikin tidak mau diawali dengan nol. Begitupun dengan bulan, bahkan tahun pun bisa hanya menggunakan format 2 angka. Bagaimana mengatasi permasalahan ini? Untuk kasus ini tidak bisa menggunakan kedua teknik di atas begitu saja, melainkan perlu sedikit merubah script yang telah dibuat, dan akan saya share buat sahabat AJN semuanya disini hanya untuk Anda.

Sebagai contoh kasus kita ingin melakukan format tanggal ke Y-m-d dari data tanggal: 31/7/88 dan 2/2/14. Scriptnya dapat dilihat di bawah ini

<?php
if(isset($_POST['proses'])){
if(trim($_POST['tgl'])!="" && preg_match("/^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{2,4}$/", $_POST['tgl'])){
$y = end(explode("/",$_POST['tgl']));
$y = ($y>=30 && $y<=99) ? 19 : 20;
$tanggal = preg_match("/^[0-9]{1}\/[0-9]{1}\/[0-9]{2}$/", $_POST['tgl']) ? preg_replace("/(\d{1})\/(\d{1})\/(\d{2})/","$y$3-0$2-0$1",$_POST['tgl']) : preg_replace("/(\d{2})\/(\d{2})\/(\d{4})/","$3-$2-$1",$_POST['tgl']);
echo "<p>Tanggal inputan: $_POST[tgl]<br />Tanggal proses: $tanggal";
}
}
?>

Udah segitu dulu sharing dari saya kali ini, kalo menemukan teknik baru insya ALlah saya update lagi artikelnya. Kalo sahabat AJN juga punya cara lain silahkan bisa dikirim di komentar.
**Semoga bermanfaat... :)