Rabu, 04 Mei 2011

PHP Mysql Import Excel ke Database

Saya bingung mau nulis pendahuluan apa biar share ini ga kaku, tapi sepertinya sih lebih baik ga nulis pendahuluan dari pada nanti pendahuluannya acak - acakan atau malah bales di baca. Tapi ya sudah saya tulis deh sedikit pendahuluannya.

Teman - teman pasti pernah dapat masalah ketika client kasih data dalam bentuk excel untuk di input di system yang dibuat. Kalau teman - teman rajin sih pasti input satu per satu data yang di excel itu ke system tapi kalau datanya ratusan bahkan ribuan terus di input satu - satu itu sih namanya kerajinan..hehe..

Nih saya kasih code supaya teman - teman tidak usah input satu - satu alias import excel tersebut lewat beberapa code dan dalam hitungan detik data ribuan itu bisa masuk (set dah emg sayah ngitung y lama detiknya).

Syaratnya teman - teman harus download dulu yang namanya php excel reader terus simpen dalam folder kerjaan dimana folder itu folder root yang dipakai untuk import dan excelnya harus berekstensi .xls

Oia contoh code ini saya pakai untuk import data obat-obatan untuk sistem apotik.. so jangan di kopi paste langsung, tapi sesuaikan denga kebutuhan temen -teman semua mau import data apa

Langsung az dah..cekidot code nya di bawah

// menggunakan class phpExcelReader
include "excel_reader2.php";
mysql_connect("localhost", "root", "");
mysql_select_db("nama_database");
$data = new Spreadsheet_Excel_Reader($_FILES['userfile']['tmp_name']);
$baris = $data->rowcount($sheet_index=0);
// nilai awal counter untuk jumlah data yang sukses dan yang gagal diimport
$sukses = 0;
$gagal = 0;
// import data excel mulai baris ke-2 (karena baris pertama adalah nama kolom)
for ($i=2; $i<=$baris; $i++)
{
// membaca data nim (kolom ke-1)
//buat injeksi
$nama = $data->val($i, 2);
$barcode = 'INJEKSI'.$i;
$hna = $data->val($i, 5);
/$q = "INSERT INTO barang (barcode,nama,hna) VALUES ".
"('$barcode','$nama','$hna')";
$hasil=mysql_query($q);
$id = mysql_insert_id();
// jika proses insert data sukses, maka counter $sukses bertambah
// jika gagal, maka counter $gagal yang bertambah
if ($hasil) $sukses++;
else $gagal++;
}

// tampilan status sukses dan gagal
echo "

Proses import data selesai.

";
echo "Jumlah data yang sukses diimport : ".$sukses."
";
echo "Jumlah data yang gagal diimport : ".$gagal."
";
?>

 Eksekusi dan hola......selesai input ratusan data hanya dalam hitungan detik :D

Mungkin itu yang bisa saya share..

Semoga membantu.

Selasa, 03 Mei 2011

Install pear mail mime di CentOS 6

Lagi dapet pemecahan dalam masalah kerjaan jadi ditulis biar ga lupa :D

Intermezzo dulu..

Teman - teman pasti pernah membuat modul untuk mengirim mail pakai php, kebanyakan pakai fungsi mail yang sudah ada di php.

Tapi............. (biar rada menegangkan dikit jadi di isi titik titik panjang) ada kalanya di ubuntu atau centos fungsi mail itu ga jalan seperti yang teman saya alamin. Dia bilang " ko fungsi email ane di centos ga jalan fizd? padahal test di windows aman - aman az ". Daripada debat ma temen saya ttg perbedaan windows dan linux, better langsung install module pear mail di centos.

Langsung az cekidot

tinggal ketik yum install php-pear-Mail-Mime

Kemudian di php nya saya kopi paste code temen saya

require "Mail.php";
   require "Mail/mime.php";

   // Identify the sender, recipient, mail subject, and body
   
   
$hostmysql = "localhost";
$username = "username_database"; // username db
$password = "password_database"; //password db
$database = "nama_database"; //nama db

$strCantQuery = mysql_connect("$hostmysql","$username","$password");
if (!$strCantQuery) die ("connection failed");
mysql_select_db($database,$strCantQuery) or die ("Database not found"); 


   // Identify the mail server, username, password, and port
   
   $server   = "nama_server_smtp"; //misalkan mail.namadomainanda.com
   $username = "username_smtp";
   $password = "password_smtp";
   $port     = "25";

// Configure the mailer mechanism
  $smtp = Mail::factory("smtp",
 array(
"host"     => $server,
"username" => $username,
"password" => $password,
"auth"     => true,
"port"     => $port
 )
  );
  
$sender    = "person@antahberantah.com";
        $subject = "Kirim Email";
                                                $recipient = "teuing@negeriawan.com";
                $body = "Kirim Email Ke Negeri Awan";
$headers_quot = array(
 "From"    => $sender,
 "To"      => $recipient,
 "Subject" => $subject_quot
);
$crlf = "\n";
$mime = new Mail_mime(array('eol' => $crlf));   
$mime->setTXTBody($subject_quot);
$mime->setHTMLBody($body);
$body = $mime->get();
$hdrs_quot = $mime->headers($headers_quot);   

  // Send the message
  $mail = $smtp->send($recipient, $hdrs_quot, $body);

  if (PEAR::isError($mail)) {
 echo ($mail->getMessage());
  }
  

saya bbm teman saya suruh test email lagi dan Holaaaa...fungsi kirim emailnya dah jalan..gampang kan?

Mungkin itu yang bisa saya share..

Semoga membantu.

Senin, 02 Mei 2011

PHP MySQL Tarik Data Absensi Dari Mesin Absen (Finger Print)

I'm back..Udah lama pengen share kaya gini tapi baru punya niat share ini lewat tulisan..biasanya sih kalo ada yang nanya saya kasih tau by email atau pas kopdar :D

Sebenarnya code php ini sudah lama dan banyak dipakai mudah-mudahan bisa berguna bagi teman - teman sekalian

Teman - teman pernah dapat project absensi karyawan atau yang lebih besar lagi sampai project penggajian mungkin? tidak bisa di pisahkan di project tersebut pasti ada modul yang namanya kehadiran karyawan.. trus darimana data kehadiran karyawannya?

Ada yang diinput manual, ada yg import dari excel dan sekarang tidak bisa di pungkiri ambil data langsung dari mesin absen. Nah lho gimana cara nya ambil data dari mesin absen?paling saya lakukan manual save data dari software bawaan mesin absensi ke excel terus baru deh saya import excel tersebut. Kalau cara seperti itu sih bukan ambil data langsung namanya..hehehe..

Saya share ini langsung ke main codingnya y..

saya anggap untuk koneksi db dan lain - lain teman - teman sudah mastah deh dan finger printnya sudah ada web service dengan kata lain mesin itu bisa konek dengan php (biasanya sih finger print sekarang sudah punya web service, saya pake finger print yg type lama jadi harus minta install dulu ke suppliernya)

// begin tag php
<?php
if($IP=="") $IP="xxx.xxx.xxx.xxx";  // ip mesin absen / finger print
if($Key=="") $Key="0";


    $Connect = fsockopen($IP, "80", $errno, $errstr, 1);
    if($Connect){
      $soap_request="<GetAttLog><ArgComKey xsi:type=\"xsd:integer\">".$Key."</ArgComKey><Arg><PIN xsi:type=\"xsd:integer\">All</PIN></Arg></GetAttLog>";
$newLine="\r\n";
fputs($Connect, "POST /iWsService HTTP/1.0".$newLine);
fputs($Connect, "Content-Type: text/xml".$newLine);
fputs($Connect, "Content-Length: ".strlen($soap_request).$newLine.$newLine);
fputs($Connect, $soap_request.$newLine);
$buffer="";
while($Response=fgets($Connect, 1024)){
$buffer=$buffer.$Response;
}

$buffer=Parse_Data($buffer,"<GetAttLogResponse>","</GetAttLogResponse>");
$buffer=explode("\r\n",$buffer);
for($a=0;$a<count($buffer);$a++){
$data=Parse_Data($buffer[$a],"<Row>","</Row>");
$PIN=Parse_Data($data,"<PIN>","</PIN>");
$DateTime= explode(" ",Parse_Data($data,"<DateTime>","</DateTime>"));
$Date = $DateTime[0];
$Time = $DateTime[1];
$Verified=Parse_Data($data,"<Verified>","</Verified>");
$Status=Parse_Data($data,"<Status>","</Status>");
if($Status=='0'){ $stat = "IN"; } else if($Status=='1'){ $stat = "OUT";};
$insertlogabsen = query("INSERT INTO log_absen VALUES('', '$PIN', '$Date', '$Time', '$stat','0','1')");
}
    }else {
          echo "Koneksi Gagal";
}
    
    
?>

// end tag php


Mungkin itu yang bisa saya share..

Semoga membantu.