DANNY:
Kisah penulisan artikel ini berawal dari SMS seorang teman yang bekerja di suatu kantor perusahaan Jepang di Jakarta. Teman saya meminta tolong untuk dibuatkan aplikasi untuk membaca data file teks yang dihasilkan dari sebuah mesin presensi bernama AMANO. File teks itu berisi data-data presensi karyawan setiap harinya. Mau tahu bentuk datanya? Ini saya tampilkan 10 baris contoh datanya ya…
Quote
Code:
31200801211455000100093408000002
31200801211455000100032510950002
31200801211529000100034212950002
31200801211530000100018412930002
31200801211531000100177001050002
31200801211531000100197108050002
31200801211531000100163007030002
31200801211531000100179402050002
31200801211531000100198408050002
31200801211531000100209501080002
Kalau datanya cuman 10 saja seperti di atas sih gak masalah… Tapi kenyataannya satu file teks berisi kira-kira 2000-3000 data presensi. Satu file teks dihasilkan dari presensi sehari. Padahal file teks yang saya terima berjumlah sekitar 30 buah (presensi dalam 30 hari). Itu pun hanya sample file saja yang dikirimkan
Dari sebuah data yang ada dalam file teks itu bermakna sesuatu. Berikut ini penjelasannya:
Misalkan diambil data
31200801211455000100093408000002
Penjelasan Digitnya :
Digit 1 – 2 (31) : menunjukkan kode bagian karyawan ditempatkan
Digit 3 – 6 (200
: menunjukkan tahun ketika presensi
Digit 7 – 8 (01) : menunjukkan bulan ketika presensi
Digit 9 – 10 (21) : menunjukkan tanggal ketika presensi
Digit 11 – 12 (14) : menunjukkan jam ketika presensi
Digit 13 – 14 (55) : menunjukkan menit ketika presensi
Digit 15 – 18 (0001) : menunjukkan keterangan presensi. Jika 0001 artinya presensi untuk masuk kerja, dan jika 0002 artinya presensi untuk keluar kerja
Digit 19 – 28 (0009340800) : menunjukkan kode karyawan yang melakukan presensi
Digit 29 – 32 (0002) : menunjukkan kode mesin presensi
Nah… yang jadi permasalahan adalah bagaimana cara mengambil atau memisahkan digit-digit tersebut, sehingga dapat dibaca per item data seperti penjelasan di atas?
Dalam PHP, hal ini tidak menjadi masalah karena ada function substr(). Bagaimana sintaksnya?
substr(x, y [, z]);
dengan x adalah string utuh yang akan diambil substring nya, y adalah posisi awal substring (dimulai dari 0), dan z adalah panjang substring yang akan diambil. Parameter z sifatnya optional. Apabila z tidak diberikan, maka pengambilan substring mulai dari posisi awal y sampai dengan akhir dari string.
Contoh:
Quote
Code:
<?php
$stringKu = "hallo";
echo substr($stringKu, 1); // menghasilkan "allo"
echo substr($stringKu, 1, 3); // menghasilkan "all"
echo substr($stringKu, 0, 4); // menghasilkan "hall"
?>
Sehingga untuk kasus data presensi di atas, script untuk memisahkan setiap item adalah sebagai berikut:
Quote
Code:
<?php
$data = "31200801211455000100093408000002";
$kodeBagian = substr($data, 0, 2);
$tahun = substr($data, 2, 4);
$bulan = substr($data, 6, 2);
$tanggal = substr($data, 8, 2);
$jam = substr($data, 10, 2);
$menit = substr($data, 12, 2);
$keterangan = substr($data, 14, 4);
$kodeKary = substr($data, 18, 10);
$kodePresensi = substr($data, 28, 4);
?>
sumber