Cara Membuat Import Data Excel ke Database Mysql dengan PHP
Saath ini, dengan semakin berkembangnya teknologi informasi, penggunaan database dalam penyimpanan data sudah menjadi hal yang lumrah. Namun, dalam pengembangan sebuah aplikasi, terkadang kita membutuhkan banyak data dan memasukkannya satu per satu ke database akan memakan waktu yang cukup lama. Untuk mengatasi hal tersebut, kita dapat menggunakan fitur import data dari file excel yang sudah tersimpan.
Salah satu cara membuat import data dari file excel ke database mysql dengan menggunakan bahasa pemrograman PHP. Tentunya, sebelum melakukan hal tersebut diperlukan sebuah tool pendukung untuk melakukan proses tersebut. Beberapa tool yang dapat digunakan antara lain PHPExcel, PhpSpreadsheet, dan PHPSpreadsheet Native. Pada tutorial ini, kita akan menggunakan tool PhpSpreadsheet.
1. Persiapan Awal
Sebelum membuat fungsi untuk import data, ada beberapa hal yang perlu dilakukan terlebih dahulu. Yang pertama, pastikan kita telah memiliki database MySQL dan sebuah tabel untuk menampung data yang akan diimport.
Untuk membuat tabel pada database MySQL, kita dapat menggunakan SQL query seperti berikut:
“`
CREATE TABLE `table_name` (
`id` int(11) NOT NULL,
`name` varchar(100) NOT NULL,
`email` varchar(100) NOT NULL,
`phone` varchar(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
“`
Pastikan kita mengubah `table_name` sesuai dengan nama tabel yang ingin digunakan.
Selain itu, pastikan juga tool PhpSpreadsheet telah terinstall pada sistem kita. Jika belum, bisa dilakukan dengan cara sebagai berikut:
“`
composer require phpoffice/phpspreadsheet
“`
2. Membuat Form Upload
Untuk mengupload file excel yang akan diimport ke database, tentunya kita perlu membuat sebuah form upload. Berikut adalah contoh kode HTML untuk membuat form upload tersebut:
“`
Import Data Excel ke Database MySQL dengan PHP
“`
Dalam form tersebut, kita menentukan form action nya ke file `import.php` karena pada file tersebut nantinya akan dihandle proses import data dari file excel ke database.
3. Membuat Fungsi Proses Import
Setelah form upload telah dibuat, selanjutnya kita perlu membuat fungsi untuk menghandle proses import data dari file excel tersebut. Pertama, kita lakukan koneksi database MySQL dengan kode berikut:
“`
$servername = “localhost”;
$username = “username”;
$password = “password”;
$dbname = “database_name”;
// buat koneksi ke database
$conn = mysqli_connect($servername, $username, $password, $dbname);
// cek koneksi
if (!$conn)
die(“Koneksi gagal: ” . mysqli_connect_error());
“`
Pastikan kita mengubah `username`, `password`, dan `database_name` sesuai dengan pengaturan yang digunakan pada sistem kita.
Selanjutnya, kita perlu membuat fungsi untuk membaca data dari file excel yang diupload. Berikut adalah contoh kode untuk membaca data tersebut:
“`
require ‘vendor/autoload.php’;
use PhpOffice\PhpSpreadsheet\IOFactory;
// ambil nama file excel yang diupload
$filename = $_FILES[‘file’][‘tmp_name’];
// load file excel menggunakan PhpSpreadsheet
$spreadsheet = IOFactory::load($filename);
$worksheet = $spreadsheet->getActiveSheet();
$rows = $worksheet->toArray(null, true, true, true);
“`
Pada kode tersebut, kita menggunakan `IOFactory` dari PhpSpreadsheet untuk mengambil file excel yang diupload.
Setelah itu, kita dapat melakukan looping untuk membaca setiap baris data dari file excel tersebut dan melakukan insert ke tabel database. Berikut adalah contoh kode untuk melakukan insert ke database:
“`
foreach ($rows as $key => $value)
if ($key != 1) // abaikan header kolom
$name = mysqli_real_escape_string($conn, $value[‘A’]);
$email = mysqli_real_escape_string($conn, $value[‘B’]);
$phone = mysqli_real_escape_string($conn, $value[‘C’]);
$query = “INSERT INTO `table_name` (`name`, `email`, `phone`) VALUES (‘$name’, ‘$email’, ‘$phone’)”;
// jalankan query
if (mysqli_query($conn, $query))
echo “Data berhasil diimport.”;
“`
Perlu diperhatikan bahwa pada contoh kode di atas, kita mengabaikan baris pertama dari file excel karena biasanya merupakan header kolom. Untuk mengabaikan baris tersebut, kita menggunakan `if ($key != 1)`. Selain itu, kita juga menggunakan `mysqli_real_escape_string()` untuk menghindari masalah SQL injection.
4. Pemrosesan Tampilan dan Import Data
Setelah fungsi untuk import data telah dibuat, selanjutnya kita perlu menghubungkan semua bagian menjadi satu tampilan utuh. Berikut adalah contoh kode untuk menghubungkan form upload dan fungsi proses import:
“`
Import Data Excel ke Database MySQL dengan PHP
getActiveSheet();
$rows = $worksheet->toArray(null, true, true, true);
foreach ($rows as $key => $value)
if ($key != 1) // abaikan header kolom
$name = mysqli_real_escape_string($conn, $value[‘A’]);
$email = mysqli_real_escape_string($conn, $value[‘B’]);
$phone = mysqli_real_escape_string($conn, $value[‘C’]);
$query = “INSERT INTO `table_name` (`name`, `email`, `phone`) VALUES (‘$name’, ‘$email’, ‘$phone’)”;
// jalankan query
if (mysqli_query($conn, $query))
echo “Data berhasil diimport.”;
mysqli_close($conn);
?>
“`
Dalam contoh kode di atas, kita mengecek apakah form telah di-submit dengan menggunakan `if (isset($_POST[‘submit’]))`. Jika sudah, maka kita memanggil fungsi untuk melakukan import data yang ada pada bagian sebelumnya. Jika belum, maka halaman akan menampilkan form upload seperti biasa.
FAQ:
1. Apakah file excel yang diimport harus memiliki format yang sama dengan tabel database?
Jawab: Ya, jika format file excel tidak sesuai dengan tabel database maka proses import tidak akan berjalan dengan baik.
2. Apakah seluruh data pada file excel akan diimport ke dalam database?
Jawab: Tidak seluruh data. Jika ada kesalahan pada baris data tertentu, maka baris tersebut akan diabaikan dan tidak diimport ke dalam database.