Belajar Web Programming PHP, HTML, MySQL dan Tutorial

Import Data CSV Ke Database MySQL Menggunakan PHP



Pendahuluan
Didalam artikel sebelumnya kita telah membahas dan mencoba bagaimana suatu aplikasi berbasis pemrograman PHP dapat membuat file excel dan menampilkannya. Dengan konsep yang sama kita dapat membuat suatu aplikasi berbasis web yang digunakan untuk mengimport data dalam jumlah besar menggunakan file csv. Mengapa hal ini diperlukan, karena apabila kita sebelumnya sudah memiliki master data sebagai contoh data customer dalam bentuk excel misalnya tentu akan sangat tidak efektif dan efisien jika kita menginputkannya satu persatu ke dalam sistem bukan?
Oleh karena itu dalam tutorial kali ini kita akan mencoba membangun suatu aplikasi berbasis web yang dapat melakukan input data melalui import data dari suatu file CSV. Mari kita mulai saja tutorialnya, selamat mencoba.

Langkah 1. Basis Data
Pertama kali buat terlebih dahulu basis data dengan menggunakan mysql dan tabel customer.
Nama database : db_belajarweb
Nama tabel : customer
Dengan field/kolom sebagai berikut



Field tersebut dibuat berdasarkan sampel contoh csv yang akan kita gunakan nantinya. File sampel csv kita peroleh dari :
https://file-examples.com/index.php/sample-documents-download/sample-xls-download/
dengan sedikit modifikasi dan perubahan pada urutan kolomnya

Langkah 2. Membuat folder kerja web
langkah kedua kita langsung membuat aplikasi berbasis php di web server masing-masing. Apabila meggunakan WAMP sourcecode diletakan di folder www sedangkan yang menggunakan XAMPP sourcecode diletakan di folder htdocs. Dalam tutorial kali ini penulis menggunakan XAMPP dengan basis PHP 5.6.15. adapun hirarki kode perogram yang akan kita gunakan adalah sebagai berikut:



Langkah 3. Membuat file koneksi.php
Pertama kali kita membuat file koneksi.php untuk menghubungkan PHP ke database mysql. Dalam penerapannya kita menggunakan function mysqli
<?php 
$host = "localhost";
$user = "root";
$pass = "";
$db   = "db_belajarweb";

$koneksi = mysqli_connect($host,$user,$pass,$db);
?>

Langkah 4. Membuat file header.php
Kemudian kita membuat file header.php karena dalam hal ini aplikasi dapat disiapkan untuk pengembangan banyak menu lainnya. Maka kita membutuhkan 1 file untuk menjadi tampilan header bagi semua view. Berikut
<!DOCTYPE html>
<html>
<head>
 <title>Aplikasi Manajemen Data Customer</title>
 <style type="text/css">
 body {
  font-family: verdana;
  font-size: 12px;
 }
 a {
  text-decoration: none;
  color: blue;
 }
 a:hover {
  text-decoration: underline;
  color: red;
 }

 .tabel {
  background: #ccc;
 }

 .tabel th {
  background: #eee;
 }

 .tabel td {
  background: #fff;
 }

 .menu_atas
 {
  width: 100%;
  background-color: #C36A2D;
  height: 36px;
 }

 .menu_atas a {
  line-height: 36px;
  display: block;
  color: #fff;
  float: left;
  min-width: 80px;
  text-align: center;
 }

 .menu_atas a:hover {
  text-decoration: none;
  color: #fff;
  /* background-color: rgba(255,255,255,0.5); */
  background-color: #E2C275;
 }
 </style>
</head>
<body>
<div>
<h2>Aplikasi Manajemen Data Customer</h2>
</div>
<div style="clear: both;"></div>
<div class="menu_atas">
<a href="index.php">Home</a>
<a href="index.php?menu=customer">Customer</a>
</div>
<div style="clear: both;"></div>

Langkah 5. Membuat file footer.php
File footer.php digunakan untuk membuat label/string yang berada dibagian bawah setiap tampilan halaman. Jika kita ingin membuat perubahan dibagian bawah/footer maka cuku menggantinya di file footer.php. berikut kode untuk footer.php
<hr>
<div align="center">
 Copyright &copy;2019 - Aplikasi Manajemen Customer
</div>
</body>
</html>

Langkah 6. Membuat file index.php
Kemudian kita masuk dalam pembuatan file index.php yang menjadi file control untuk mengelola navigasi, tampilan dan akses terhadap file sesuai dengan apa yang diinputkan user. Berikut adalah sourcecode untuk file index.php
<?php
include "koneksi.php";
include "header.php";

$menu = isset($_GET['menu'])?$_GET['menu']:"";
if($menu == "")         { include 'home.php';}
if($menu == "customer") { include 'customer.php';}

include "footer.php";
?>

Langkah 7. Membuat file home.php
File home.php digunakan untuk menampilkan halaman awal apabila aplikasi web tersebut diakses. Berikut adalah contoh kode untuk file home.php
<h3>Aplikasi Pengelolaan Data Customer</h3>
<hr>
Aplikasi ini digunakan untuk mengelola data customer. Data-data customer tersebut dapat dikelola dengan menggunakan fitur import CSV.>
<br>
Data sampel diambil dari: https://file-examples.com/index.php/sample-documents-download/sample-xls-download/

Langkah 8. Membuat file customer.php
Pada halaman ini kita membuat sebuah tampilan yang terdiri dari beberapa tombol/button yaitu import data, clea data dan pencarian. Serta sebuah text box untuk melakukan pencarian dan tabel html untuk menampilkan data hasil import dari file csv tersebut. berikut ini adalah kode php untuk file customer.php
<?php 
$aksi = isset($_GET['aksi'])?$_GET['aksi']:"";
if($aksi == "import") { include "customer_import.php"; }
if($aksi == "") { 
?>

<h3 align="center">Manajemen Data Customer</h3>
<hr>
<a href="index.php?menu=customer&aksi=import">
<button>Import CSV</button>
</a>
<a href="customer_truncate.php" class="btn btn-biru">
<button>Clear Data</button>
</a>

<hr style="clear: both;">
<form action="index.php" method="get">
<input type="hidden" name="menu" value="customer">
<input type="text" name="cari" required placeholder="Cari ID atau first name">
<input type="submit" value="Cari Data">
</form>
<hr>
<table width="100%" cellspacing="1" cellpadding="4" class="tabel">
<tr>
 <th width="50">No</th>
 <th width="75">ID</th>
 <th width="100">First Name</th>
 <th width="100">Last Name</th>
 <th width="75">Gender</th>
 <th>Country</th>
 <th width="100">Age</th>
</tr>
<?php 

$cari  = isset($_GET['cari'])?$_GET['cari']:"";
$where = "";
if(!empty($cari))
{
 $where = " WHERE id LIKE '%$cari%' OR 
      first_name LIKE '%$cari%'";
}
//ambil data dari database dengan sql
$sql = "SELECT * FROM customer $where ORDER BY first_name ASC";
$query = mysqli_query($koneksi,$sql);
$no = 1;
while($data = mysqli_fetch_array($query))
{
 $linkdelete = "customer_querydelete.php?id=$data[id]";
 $linkedit   = "index.php?menu=customer&aksi=edit&id=$data[id]";
?>
<tr>
 <td><?php echo $no;?></td>
 <td><?php echo $data['id'];?></td>
 <td><?php echo $data['first_name'];?></td>
 <td><?php echo $data['last_name'];?></td>
 <td><?php echo $data['gender'];?></td>
 <td><?php echo $data['country'];?></td>
 <td><?php echo $data['age'];?></td>
</tr>
<?php 
$no++;
}
?>
</table>
<?php 
}//jika aksi kosong
?>

Langkah 9. Membuat file customer_import.php
Kemudian kita membuat file customer_import.php, halaman ini merupakan sebuah form yang berisi 1buah input file dan 1 buah input submit, yang perlu diperhatikan adalah pada tag form harap menyertakan atribut enctype agar form dapat mengirim file yang kita attach/lampirkan. Berikut sourcecode dari customer_import.php
<h3 align="center">Manajemen Data Customer</h3>
<hr>
<b>Form Import Data</b>
<hr>
<form action="customer_queryimport.php" method="post" enctype="multipart/form-data">
<table width="100%" border="0">
<tr>
 <td width="150">File CSV</td>
 <td><input type="file" name="filecsv" required></td>
</tr>
<tr>
 <td width="150"></td>
 <td><button type="submit" >Import</button></td>
</tr>
</table>
</form>

Langkah 10. Membuat file customer_queryimport.php
Selanjutnya kita sampai kepada bagian yang terpenting yaitu pemrosesan file yang diupload tadi untuk dapat tersimpan ke dalam database secara simultan. Kode ini terbagi menjadi 2 bagian, bagian pertama adalah bagaimana PHP menangani berkas/file yang kita upload. Sedangkan bagian kedua adalah meloading/memanggil file CSV yang telah kita upload tersebut untuk diakses dan diekstrak datanya menjadi array. Data yang telah diekstraksi/konversi menjadi bentuk array dapat kita looping menggunakan while() sebanyak sejumlah data yang ada disetiap baris dalam file CSV tersebut. kuncinya pada saat setiap looping melakukan iterasi berjalan maka pada saat itulah data satu baris dari record CSV akan kita insert ke dalam tabel pada database.

Hal yang sangat penting adalah file CSV kadang memberikan delimiter yang berbeda-beda, ada yang menggunakan koma (,) dan ada juga yang menggunakan titikkoma (;) untuk itu sebelum kita melakukan insert kita membuat pengecekan terlebih dahulu terhadap delimiter apa yang digunakan oleh file CSV yang kita upload sebelumnya. Dengan demikian user tidak perlu lagi mengubah secara manual delimiter file CSV nya masing-masing dikarenakan sistem sudah dapat mengenali hal tersebut.

Untuk lebih jelasnya berikut adalah sourcecode lengkap file customer_queryimport.php yang dapat kita coba.
<?php 
include "koneksi.php";

$folder   = 'berkas';
$tmp_name = $_FILES["filecsv"]["tmp_name"];
$name     = "file_upload.csv";
move_uploaded_file($tmp_name, "$folder/$name");

//cek apakah delimiter menggunakan , atau ;
$file = fopen("berkas/file_upload.csv","r"); //buka file csv
$cek  = fgetcsv($file,0,','); //baca isi csv perbaris dengan koma
if(!empty($cek[1])) { 
 $delimiter=",";
}
else { 
 $delimiter=";";
}
fclose($file);
//batas

//insert ke database
$file = fopen("berkas/file_upload.csv","r"); //buka file csv
$baris= 0;
while(!feof($file)) //cari akhir baris csv
{
  $data = fgetcsv($file,0,$delimiter);
  if(!empty($data[0])) //tidak mengikutkan spasi kosong
  { 
  if($baris >= 1) //karena baris 0 adalah judul kolom/field
  {

$id   = $data[0];
$first_name = $data[1];
$last_name  = $data[2];
$gender  = $data[3];
$country  = $data[4];
$age   = $data[5];

$sql = "INSERT INTO customer 
   (id, first_name, last_name, gender, country, age) 
   VALUES 
   ('$id','$first_name','$last_name', '$gender','$country', '$age')";
mysqli_query($koneksi,$sql);

  } 
  }
$baris++;
}
fclose($file); //tutup akses file csv

$pesan = "Data berhasil diimpor";
$url   = "index.php?menu=customer";

echo "<script> 
  alert('$pesan'); 
  location='$url';
   </script>";

?>


Langkah 11. Membuat file customer_truncate.php
Langkah terakhir adalah pembuat perintah untuk mengosongkan tabel. Biasanya pada saat melakukan eksperimen import data dimungkikan kan untuk terdapat error/bug yang belum terpikirkan sebeliumnya. Maka fitur clear data ini akan membantu kita untuk mengosongkan tabel secara cepat. Berikut ini adalah kode PHP untuk mengosongkan tabel dengan perintah SQL Truncate.
<?php 
include "koneksi.php";


$sql = "TRUNCATE TABLE customer";
mysqli_query($koneksi,$sql);
$pesan = "Data berhasil dihapus";
$url   = "index.php?menu=customer";

echo "<script> 
  alert('$pesan'); 
  location='$url';
   </script>";

?>

Hasil Aplikasi
Apabila semua kode diatas sudah dibuat maka kita dapat menjalankannya melalui localhost pada web browser kita. Untuk data sampel CSV yang digunakan dapat kalian download disini atau dapat membuatnya sendiri menggunakan ms excel. Yang perlu diperhatikan dalam pembuatan CSV adalah pada baris pertama berisikan nama-nama kolom sesuai database. Sedangkan untuk datanya diisi pada baris kedua dan seterusnya. Jadi sistem yang kita buat diatas melakukan pengecekan yang dimulai dari baris kedua hingga baris data terakhir. Sistem juga telah disiapkan untuk mengantisipasi adanya inputan data yang kosong di setiap baris (1 baris tersebut tidak ada datanya) dengan demikian tidak ada lagi inputan dengan data yang kosong masuk kedalam database. Berikut ini adalah screenshot hasil program yang barusan telah selesai kita kerjakan. Selamat mencoba ya.

Sampel fle csv: download




Labels: Aplikasi Web, import CSV, PHP

Terima kasih telah membaca Import Data CSV Ke Database MySQL Menggunakan PHP. Bila bermanfaat boleh di share yah :)

1 Comment for "Import Data CSV Ke Database MySQL Menggunakan PHP"

Thanks for share, kunjungi juga http://bit.ly/2k4djDK

Back To Top