Cara Membuat Import File CSV ke MySQL menggunakan PHP

0 270

Beberapa bulan ini karena kesibukan pekerjaan jadi tidak bisa update artikel ngoding lagi, jadi saat ini menyempatkan untuk share artikel kembali. Dalam tutorial ini, saya akan memberitahukan bagaimana cara nya membuat kode PHP untuk mengimpor file CSV ke dalam database MySQL dengan mengurai data yang dipisahkan koma. File CSV dikirim melalui formulir HTML. Saya menggunakan fungsi fgetcsv() untuk membaca data kolom tabel database dari CSV.

Form HTML untuk Mengimpor File CSV

Kode HTML ini digunakan untuk menampilkan form dengan opsi impor file CSV. Setelah mengirimkan file, kode PHP mem-parsing data CSV dan menyiapkan query INSERT untuk memuat data ke dalam database. Setelah mengimpor data ke dalam database, baris yang ditambahkan tercantum di browser. Saat pengguna mengunggah sumber CSV, jenis file dibatasi dengan menentukan .csv menggunakan atribut accept.

<form class="form-horizontal" action="" method="post" name="uploadCSV"
    enctype="multipart/form-data">
    <div class="input-row">
        <label class="col-md-4 control-label">Choose CSV File</label> <input
            type="file" name="file" id="file" accept=".csv">
        <button type="submit" id="submit" name="import"
            class="btn-submit">Import</button>
        <br />

    </div>
    <div id="labelError"></div>
</form>

Validasi jQuery untuk memeriksa jenis file yang diunggah dilakukan dengan menggunakan regex. Ini memeriksa apakah file yang diunggah dengan ekstensi .csv. Jika demikian, maka akan memungkinkan tindakan default lebih lanjut untuk mengirimkan file binari ke PHP. Jika tidak, akan berhenti mengirimkan formulir dan menampilkan kesalahan ke browser.

<script type="text/javascript">
	$(document).ready(
	function() {
		$("#frmCSVImport").on(
		"submit",
		function() {

			$("#response").attr("class", "");
			$("#response").html("");
			var fileType = ".csv";
			var regex = new RegExp("([a-zA-Z0-9\s_\\.\-:])+("
					+ fileType + ")$");
			if (!regex.test($("#file").val().toLowerCase())) {
				$("#response").addClass("error");
				$("#response").addClass("display-block");
				$("#response").html(
						"Invalid File. Upload : <b>" + fileType
								+ "</b> Files.");
				return false;
			}
			return true;
		});
	});
</script>

Kode PHP untuk Mengimpor Data CSV ke MySQL

Dalam kode PHP, ia membaca file CSV yang diunggah dan mem-parsing data. Ini akan membuka file input dalam mode baca dan mendapatkan data kolom menggunakan fgetcsv (). Ini terus melanjutkan proses ini dalam satu lingkaran sampai mencapai akhir file CSV. Untuk setiap iterasi. itu mendapat array data kolom dari satu record. Ini mempersiapkan query INSERT menggunakan data ini dan menjalankannya untuk memuat data ke dalam database.

<?php
$conn = mysqli_connect("localhost", "root", "test", "phpsamples");

if (isset($_POST["import"])) {
    
    $fileName = $_FILES["file"]["tmp_name"];
    
    if ($_FILES["file"]["size"] > 0) {
        
        $file = fopen($fileName, "r");
        
        while (($column = fgetcsv($file, 10000, ",")) !== FALSE) {
            $sqlInsert = "INSERT into users (userId,userName,password,firstName,lastName)
                   values ('" . $column[0] . "','" . $column[1] . "','" . $column[2] . "','" . $column[3] . "','" . $column[4] . "')";
            $result = mysqli_query($conn, $sqlInsert);
            
            if (! empty($result)) {
                $type = "success";
                $message = "CSV Data Imported into the Database";
            } else {
                $type = "error";
                $message = "Problem in Importing CSV Data";
            }
        }
    }
}
?>

Setelah mengimpor data lengkap dari file CSV, file akan menampilkan data yang tersimpan dalam tampilan grid. Kode untuk mengambil data yang tersimpan dan tampilan grid adalah sebagai berikut.

<?php
$sqlSelect = "SELECT * FROM users";
$result = mysqli_query($conn, $sqlSelect);
            
if (mysqli_num_rows($result) > 0) {
?>
<table id='userTable'>
    <thead>
        <tr>
            <th>User ID</th>
            <th>User Name</th>
            <th>First Name</th>
            <th>Last Name</th>

        </tr>
    </thead>
    <?php
	while ($row = mysqli_fetch_array($result)) {
    ?>

    <tbody>
        <tr>
            <td><?php  echo $row['userId']; ?></td>
            <td><?php  echo $row['userName']; ?></td>
            <td><?php  echo $row['firstName']; ?></td>
            <td><?php  echo $row['lastName']; ?></td>
        </tr>
     <?php
     }
     ?>
    </tbody>
</table>
<?php } ?>

Impor File CSV ke MySQL menggunakan PHP Output

Screenshot ini menampilkan daftar data CSV yang diimpor dari database setelah mengimpor file CSV yang berhasil.

Get real time updates directly on you device, subscribe now.

Leave A Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.