Please enable JavaScript!
Bitte aktiviere JavaScript!
S'il vous plaît activer JavaScript!
Por favor,activa el JavaScript!
antiblock.org

 |  | 
Anda ingin membuat website?
Untuk Anda yang sedang mencari orang untuk jasa pembuatan website, Saya akan bantu buatkan aplikasi sesuai kebutuhan Anda. Segera hubungi : mail@rizaldimaulidia.com. Selengkapnya tentang profil saya klik www.rizaldimaulidia.com.

PHP

Cara Membuat Import Data CSV dengan PHP dan MySQL

img-responsive

Setelah sebelumnya saya membuat catatan mengenai cara membuat import data excel, kali ini saya akan coba menjelaskan langkah demi langkah untuk import data CSV. Dalam catatan ini, kita menggunakan librari / plugin yang sama dengan catatan import data excel tadi. Yaitu menggunakan librari PHPExcel. Jadi kurang lebih skripnya pun hampir sama dengan import data excel. Cuman memang ada beberap skrip yang beda pastinya. Untuk lebih jelasnya, silahkan ikuti step by step berikut ini :

PENTING, MOHON DIBACA TERLEBIH DAHULU
Tutorial ini menggunakan librari PHPExcel untuk proses import excelnya. Librari ini setau saya dan sudah saya tes hanya mendukung sampai PHP Versi 7.2.8. Jadi bagi kamu yang pakai PHP Versi diatas 7.2.8, sebaiknya downgrade dulu atau download Xampp dimana PHP nya masih versi 7.2.8 ke bawah. Untuk tutorial PHP Versi 7.2.8 ke atas akan saya buatkan, jadi tunggu saja update tutorial selanjutnya.


Berikut adalah fitur-fitur yang akan kita buat:

  1. View Data dari Database.
  2. Form untuk Import Data.
  3. Preview Data yang akan diimport sebelum di simpan ke database.
  4. Validasi terhadap file yang dipilih oleh User pada form import.
  5. Validasi terhadap input data. Jika ada data yang kosong / belum diisi, sistem akan memberitahu jumlah data yang kosong dan data mana saja.

DEMO
Sebelum masuk ke tutorialnya. Mungkin ada yang mau lihat demonya terlebih dahulu. Silahkan klik link berikut untuk melihat demonya : Lihat Demo.


STEP 1 – PERSIAPAN
Berikut ini adalah hal-hal yang harus dipersiapkan :

  1. Download Bootstrap, Klik link berikut : Download.
  2. Download Jquery, Klik link berikut : Download.
  3. Download librari PHPExcel nya, klik link berikut ini : Download.
  4. Download format import data csv, klik link berikut : Download. File ini berfungsi sebagai format csv yang digunakan untuk import data.
  5. Buat sebuah folder dengan nama import_php, lalu simpan pada folder xampp/htdocs/.
  6. Buat sebuah folder dengan nama tmp, lalu simpan pada folder xampp/htdocs/import_csv/.
  7. Buat sebuah folder dengan nama css, lalu simpan pada folder xampp/htdocs/import_csv/.
  8. Buat sebuah folder dengan nama js, lalu simpan pada folder xampp/htdocs/import_csv/.
  9. Esktrak file bootstrap.7z yang telah didownload tadi.
  10. Copy and paste folder fonts dari folder bootstrap yang telah diekstrak tadi ke folder xampp/htdocs/import_csv/.
  11. Copy and paste file bootstrap.min.css dari folder bootstrap/css/ yang telah diekstrak tadi ke folder xampp/htdocs/import_csv/css/.
  12. Rename file JQUERY yang telah di downlaod tadi menjadi jquery.min.js, lalu copy and paste pada folder xampp/htdocs/import_csv/js/.
  13. Ekstrak file librari PHPExcel.7z yang telah didownload tadi.
  14. Copy and paste folder PHPExcel hasil ekstrak file tadi ke folder xampp/htdocs/import_csv/.
  15. Copy and paste file Format.xlsx yang telah didownload ke folder xampp/htdocs/import_csv/.

STEP 2 – DATABASE
Pada step ini, kita akan membuat databasenya. ikuti langkah-langkah berikut ini :

  1. Buat sebuah database dengan nama mynotescode.
  2. Buat sebuah tabel dengan nama siswa. Struktur tabelnya sebagai berikut :
    Struktur Tabel - Cara Membuat Import Data CSV dengan PHP dan MySQL

    CREATE TABLE IF NOT EXISTS `siswa` (    
      `nis` varchar(11) NOT NULL,    
      `nama` varchar(50) NOT NULL,    
      `jenis_kelamin` varchar(10) NOT NULL,    
      `telp` varchar(15) NOT NULL,    
      `alamat` text NOT NULL,    
      PRIMARY KEY (`nis`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

STEP 3 – KONEKSI DATABASE
Pada step ini, kita akan membuat file php yang berfungsi untuk menghubungkan dengan database MySQL. Silahkan buat file koneksi.php, lalu simpan di folder xampp/htdocs/import_csv/. Berikut ini kodenya :

<?php
$host = 'localhost'; // Nama hostnya
$username = 'root'; // Username
$password = ''; // Password (Isi jika menggunakan password)
$database = 'mynotescode'; // Nama databasenya

// Koneksi ke MySQL dengan PDO
$pdo = new PDO('mysql:host='.$host.';dbname='.$database, $username, $password);
?>

STEP 4 – VIEW DATA
Selanjutnya kita akan membuat sebuah file php yang berfungsi untuk menampilkan data hasil import data dari database. Buat sebuah file baru dengan nama index.php, lalu simpan pada folder xampp/htdocs/import_csv/. Berikut ini tampilan dan kodenya :

View - Form - Penjelasan - Penjelasan - Cara Membuat Import Data CSV dengan PHP dan MySQL

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Import Data CSV dengan PHP</title>

    <!-- Load File bootstrap.min.css yang ada difolder css -->
    <link href="css/bootstrap.min.css" rel="stylesheet">
    
    <!-- Style untuk Loading -->
    <style>
        #loading{
      background: whitesmoke;
      position: absolute;
      top: 140px;
      left: 82px;
      padding: 5px 10px;
      border: 1px solid #ccc;
    }
    </style>
  </head>
  <body>
    <!--
    -- START HEADER
    -- Membuat Menu Header / Navbar
    -- Hapus saja jika tidak diperlukan
    -->
    <nav class="navbar navbar-inverse" role="navigation">
      <div class="container-fluid">
        <div class="navbar-header">
          <a class="navbar-brand" href="#" style="color: white;"><b>Import Data Excel dengan PHP</b></a>
        </div>
        <p class="navbar-text navbar-right hidden-xs" style="color: white;padding-right: 10px;">
          FOLLOW US ON &nbsp;
          <a target="_blank" style="background: #3b5998; padding: 0 5px; border-radius: 4px; color: #f7f7f7; text-decoration: none;" href="https://www.facebook.com/mynotescode">Facebook</a> 
          <a target="_blank" style="background: #00aced; padding: 0 5px; border-radius: 4px; color: #ffffff; text-decoration: none;" href="https://twitter.com/mynotescode">Twitter</a> 
          <a target="_blank" style="background: #d34836; padding: 0 5px; border-radius: 4px; color: #ffffff; text-decoration: none;" href="https://plus.google.com/118319575543333993544">Google+</a>
        </p>
      </div>
    </nav>
    <!-- END HEADER -->
    
    <!-- Content -->
    <div style="padding: 0 15px;">
      <!-- 
      -- Buat sebuah tombol untuk mengarahkan ke form import data
      -- Tambahkan class btn agar terlihat seperti tombol
      -- Tambahkan class btn-success untuk tombol warna hijau
      -- class pull-right agar posisi link berada di sebelah kanan
      -->
      <a href="form.php" class="btn btn-success pull-right">
        <span class="glyphicon glyphicon-upload"></span> Import Data
      </a>
      
      <h3>Data Hasil Import</h3>
      
      <hr>
      
      <!-- Buat sebuah div dan beri class table-responsive agar tabel jadi responsive -->
      <div class="table-responsive">
        <table class="table table-bordered">
          <tr>
            <th>No</th>
            <th>NIS</th>
            <th>Nama</th>
            <th>Jenis Kelamin</th>
            <th>Telepon</th>
            <th>Alamat</th>
          </tr>
          <?php
          // Load file koneksi.php
          include "koneksi.php";
          
          // Buat query untuk menampilkan semua data siswa
          $sql = $pdo->prepare("SELECT * FROM siswa");
          $sql->execute(); // Eksekusi querynya
          
          $no = 1; // Untuk penomoran tabel, di awal set dengan 1
          while($data = $sql->fetch()){ // Ambil semua data dari hasil eksekusi $sql
            echo "<tr>";
            echo "<td>".$no."</td>";
            echo "<td>".$data['nis']."</td>";
            echo "<td>".$data['nama']."</td>";
            echo "<td>".$data['jenis_kelamin']."</td>";
            echo "<td>".$data['telp']."</td>";
            echo "<td>".$data['alamat']."</td>";
            echo "</tr>";
            
            $no++; // Tambah 1 setiap kali looping
          }
          ?>
        </table>
      </div>
    </div>
  </body>
</html>

Saya akan coba jelaskan sedikit mengenai kode diatas.

include “koneksi.php”;
Kode tersebut berfungsi untuk me-load file koneksi.php.

$sql = $pdo->prepare(“SELECT * FROM siswa”);
$sql->execute();
Kode tersebut berfungsi untuk melakukan query ke database dan mengeksekusinya. Pada cotoh diatas, kita akan melakukan query untuk menampilkan semua data dari tabel siswa.

$data = $sql->fetch()
Kode tersebut berfungsi untuk mengambil semua data hasil query dan menampung data-data tersebut di dalam sebuah array lalu menyimpannya ke dalam variabel $data. Kode tersebut saya simpan di dalam sebuah kode while(….) yang berfungsi untuk melakukan proses perulangan sampai data terkahir dengan tujuan agar kita bisa menampilkan datanya satu per satu.

echo "<tr>";
echo "<td>".$no."</td>";
echo "<td>".$data['nis']."</td>";
echo "<td>".$data['nama']."</td>";
echo "<td>".$data['jenis_kelamin']."</td>";
echo "<td>".$data['telp']."</td>";
echo "<td>".$data['alamat']."</td>";
echo "</tr>";

Pada kode diatas terdapat variabel $data digunakan untuk mengambil isi dari field-field yang ada pada tabel siswa di database mynotescode. Pada kode diatas juga ada kode yang berada pada tanda [‘……’], kode tersebut harus sama dengan nama field yang ada pada tabel siswa.


STEP 5 – FORM DAN PREVIEW
Langkah selanjutnya kita akan membuat sebuah form untuk import data excelnya. Buat sebuah file baru dengan nama form.php, lalu simpan pada folder xampp/htdocs/import_csv/. Berikut tampilan dan kodenya :

<!--
-- Source Code from My Notes Code (www.mynotescode.com)
--
-- Follow Us on Social Media
-- Facebook : http://facebook.com/mynotescode/
-- Twitter  : http://twitter.com/mynotescode
-- Google+  : http://plus.google.com/118319575543333993544
--
-- Terimakasih telah mengunjungi blog kami.
-- Jangan lupa untuk Like dan Share catatan-catatan yang ada di blog kami.
-->

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Import Data CSV dengan PHP</title>

    <!-- Load File bootstrap.min.css yang ada difolder css -->
    <link href="css/bootstrap.min.css" rel="stylesheet">

    <!-- Style untuk Loading -->
    <style>
        #loading{
      background: whitesmoke;
      position: absolute;
      top: 140px;
      left: 82px;
      padding: 5px 10px;
      border: 1px solid #ccc;
    }
    </style>

    <!-- Load File jquery.min.js yang ada difolder js -->
    <script src="js/jquery.min.js"></script>

    <script>
    $(document).ready(function(){
      // Sembunyikan alert validasi kosong
      $("#kosong").hide();
    });
    </script>
  </head>
  <body>
    <!--
    -- START HEADER
    -- Membuat Menu Header / Navbar
    -- Hapus saja jika tidak diperlukan
    -->
    <nav class="navbar navbar-inverse" role="navigation">
      <div class="container-fluid">
        <div class="navbar-header">
          <a class="navbar-brand" href="#" style="color: white;"><b>Import Data Excel dengan PHP</b></a>
        </div>
        <p class="navbar-text navbar-right hidden-xs" style="color: white;padding-right: 10px;">
          FOLLOW US ON &nbsp;
          <a target="_blank" style="background: #3b5998; padding: 0 5px; border-radius: 4px; color: #f7f7f7; text-decoration: none;" href="https://www.facebook.com/mynotescode">Facebook</a>
          <a target="_blank" style="background: #00aced; padding: 0 5px; border-radius: 4px; color: #ffffff; text-decoration: none;" href="https://twitter.com/mynotescode">Twitter</a>
          <a target="_blank" style="background: #d34836; padding: 0 5px; border-radius: 4px; color: #ffffff; text-decoration: none;" href="https://plus.google.com/118319575543333993544">Google+</a>
        </p>
      </div>
    </nav>
    <!-- END HEADER -->

    <!-- Content -->
    <div style="padding: 0 15px;">
      <!-- Buat sebuah tombol Cancel untuk kemabli ke halaman awal / view data -->
      <a href="index.php" class="btn btn-danger pull-right">
        <span class="glyphicon glyphicon-remove"></span> Cancel
      </a>

      <h3>Form Import Data</h3>
      <hr>

      <!-- Buat sebuah tag form dan arahkan action nya ke file ini lagi -->
      <form method="post" action="" enctype="multipart/form-data">
        <a href="Format.csv" class="btn btn-default">
          <span class="glyphicon glyphicon-download"></span>
          Download Format
        </a><br><br>

        <!--
        -- Buat sebuah input type file
        -- class pull-left berfungsi agar file input berada di sebelah kiri
        -->
        <input type="file" name="file" class="pull-left">

        <button type="submit" name="preview" class="btn btn-success btn-sm">
          <span class="glyphicon glyphicon-eye-open"></span> Preview
        </button>
      </form>

      <hr>

      <!-- Buat Preview Data -->
      <?php
      // Jika user telah mengklik tombol Preview
      if(isset($_POST['preview'])){
        $nama_file_baru = 'data.csv';

        // Cek apakah terdapat file data.xlsx pada folder tmp
        if(is_file('tmp/'.$nama_file_baru)) // Jika file tersebut ada
          unlink('tmp/'.$nama_file_baru); // Hapus file tersebut

        $nama_file = $_FILES['file']['name']; // Ambil nama file yang akan diupload
        $tmp_file = $_FILES['file']['tmp_name'];
        $ext = pathinfo($nama_file, PATHINFO_EXTENSION); // Ambil ekstensi file yang akan diupload

        // Cek apakah file yang diupload adalah file CSV
        if($ext == "csv"){
          // Upload file yang dipilih ke folder tmp
          move_uploaded_file($tmp_file, 'tmp/'.$nama_file_baru);

          // Load librari PHPExcel nya
          require_once 'PHPExcel/PHPExcel.php';

          $inputFileType = 'CSV';
          $inputFileName = 'tmp/data.csv';

          $reader = PHPExcel_IOFactory::createReader($inputFileType);
          $excel = $reader->load($inputFileName);

          // Buat sebuah tag form untuk proses import data ke database
          echo "<form method='post' action='import.php'>";

          // Buat sebuah div untuk alert validasi kosong
          echo "<div class='alert alert-danger' id='kosong'>
          Semua data belum diisi, Ada <span id='jumlah_kosong'></span> data yang belum lengkap diisi.
          </div>";

          echo "<table class='table table-bordered'>
          <tr>
            <th colspan='5' class='text-center'>Preview Data</th>
          </tr>
          <tr>
            <th>NIS</th>
            <th>Nama</th>
            <th>Jenis Kelamin</th>
            <th>Telepon</th>
            <th>Alamat</th>
          </tr>";

          $numrow = 1;
          $kosong = 0;
          $worksheet = $excel->getActiveSheet();
          foreach ($worksheet->getRowIterator() as $row) { // Lakukan perulangan dari data yang ada di csv
            // Cek $numrow apakah lebih dari 1
            // Artinya karena baris pertama adalah nama-nama kolom
            // Jadi dilewat saja, tidak usah diimport
            if($numrow > 1){
              // START -->
              // Skrip untuk mengambil value nya
              $cellIterator = $row->getCellIterator();
              $cellIterator->setIterateOnlyExistingCells(false); // Loop all cells, even if it is not set

              $get = array(); // Valuenya akan di simpan kedalam array,dimulai dari index ke 0
              foreach ($cellIterator as $cell) {
                array_push($get, $cell->getValue()); // Menambahkan value ke variabel array $get
              }
              // <-- END

              // Ambil data value yang telah di ambil dan dimasukkan ke variabel $get
              $nis = $get[0]; // Ambil data NIS
              $nama = $get[1]; // Ambil data nama
              $jenis_kelamin = $get[2]; // Ambil data jenis kelamin
              $telp = $get[3]; // Ambil data telepon
              $alamat = $get[4]; // Ambil data alamat

              // Cek jika semua data tidak diisi
              if($nis == "" && $nama == "" && $jenis_kelamin == "" && $telp == "" && $alamat == "")
                continue; // Lewat data pada baris ini (masuk ke looping selanjutnya / baris selanjutnya)

              // Validasi apakah semua data telah diisi
              $nis_td = ($nis == "")? " style='background: #E07171;'" : ""; // Jika NIS kosong, beri warna merah
              $nama_td = ($nama == "")? " style='background: #E07171;'" : ""; // Jika Nama kosong, beri warna merah
              $jk_td = ($jenis_kelamin == "")? " style='background: #E07171;'" : ""; // Jika Jenis Kelamin kosong, beri warna merah
              $telp_td = ($telp == "")? " style='background: #E07171;'" : ""; // Jika Telepon kosong, beri warna merah
              $alamat_td = ($alamat == "")? " style='background: #E07171;'" : ""; // Jika Alamat kosong, beri warna merah

              // Jika salah satu data ada yang kosong
              if($nis == "" or $nama == "" or $jenis_kelamin == "" or $telp == "" or $alamat == ""){
                $kosong++; // Tambah 1 variabel $kosong
              }

              echo "<tr>";
              echo "<td".$nis_td.">".$nis."</td>";
              echo "<td".$nama_td.">".$nama."</td>";
              echo "<td".$jk_td.">".$jenis_kelamin."</td>";
              echo "<td".$telp_td.">".$telp."</td>";
              echo "<td".$alamat_td.">".$alamat."</td>";
              echo "</tr>";
            }

            $numrow++; // Tambah 1 setiap kali looping
          }

          echo "</table>";

          // Cek apakah variabel kosong lebih dari 1
          // Jika lebih dari 1, berarti ada data yang masih kosong
          if($kosong > 1){
          ?>
            <script>
            $(document).ready(function(){
              // Ubah isi dari tag span dengan id jumlah_kosong dengan isi dari variabel kosong
              $("#jumlah_kosong").html('<?php echo $kosong; ?>');

              $("#kosong").show(); // Munculkan alert validasi kosong
            });
            </script>
          <?php
          }else{ // Jika semua data sudah diisi
            echo "<hr>";

            // Buat sebuah tombol untuk mengimport data ke database
            echo "<button type='submit' name='import' class='btn btn-primary'><span class='glyphicon glyphicon-upload'></span> Import</button>";
          }

          echo "</form>";
        }else{ // Jika file yang diupload bukan File CSV
          // Munculkan pesan validasi
          echo "<div class='alert alert-danger'>
          Hanya File CSV (.csv) yang diperbolehkan
          </div>";
        }
      }
      ?>
    </div>
  </body>
</html>

Form - Penjelasan - Penjelasan - Cara Membuat Import Data CSV dengan PHP dan MySQL

Saya tidak akan menjelaskan soal skrip diatas, karena sudah saya jelaskan per masing-masing skrip (dengan komentar). Tapi saya akan jelaskan alur form import diatas. Pertama, User harus mendownload Format File CSV yang sudah kita buat sebelumnya. Kedua, User megisi data yang akan diimport pada file CSV yang telah di download tadi. Ketiga, user memilih file CSV yang akan diimport datanya lalu klik tombol preview. Keempat, Ketika user mengklik tombol preview, sistem akan melakukan:

  1. Validasi apakah file yang dipilih memiliki format CSV atau tidak
  2. Validasi apakah user telah mengisi semua data yang diperlukan pada file CSV tersebut. Jika masih ada yang kosong / belum diisi, sistem akan memberi informasi berupa jumlah data yang masih kosong dan memberi tahu user data mana saja yang kosong dengan cara memberi background merah pada kolom / baris yang kosong (pada tabel preview)
  3. Apabila lolos dari kedua validasi yang saya sebutkan diatas, sistem akan memunculkan tombol Import untuk melakukan proses import data. Tapi apabila ternyata tidak lolos validasi, tombol import tidak akan muncul.

STEP 5 – PROSES IMPORT
Terakhir, kita akan membuat file php untuk memproses import data ke databasenya. Buat sebuah file baru dengan nama import.php, lalu simpan pada folder xampp/htdocs/import_csv/. Berikut ini kodenya :

<?php
/*
-- Source Code from My Notes Code (www.mynotescode.com)
--
-- Follow Us on Social Media
-- Facebook : http://facebook.com/mynotescode
-- Twitter  : http://twitter.com/mynotescode
-- Google+  : http://plus.google.com/118319575543333993544
--
-- Terimakasih telah mengunjungi blog kami.
-- Jangan lupa untuk Like dan Share catatan-catatan yang ada di blog kami.
*/

// Load file koneksi.php
include "koneksi.php";

if(isset($_POST['import'])){ // Jika user mengklik tombol Import
  // Load librari PHPExcel nya
  require_once 'PHPExcel/PHPExcel.php';

  $inputFileType = 'CSV';
  $inputFileName = 'tmp/data.csv';

  $reader = PHPExcel_IOFactory::createReader($inputFileType);
  $excel = $reader->load($inputFileName);

  $numrow = 1;
  $worksheet = $excel->getActiveSheet();
  foreach ($worksheet->getRowIterator() as $row) {
    // Cek $numrow apakah lebih dari 1
    // Artinya karena baris pertama adalah nama-nama kolom
    // Jadi dilewat saja, tidak usah diimport
    if($numrow > 1){
      // START -->
      // Skrip untuk mengambil value nya
      $cellIterator = $row->getCellIterator();
      $cellIterator->setIterateOnlyExistingCells(false); // Loop all cells, even if it is not set

      $get = array(); // Valuenya akan di simpan kedalam array,dimulai dari index ke 0
      foreach ($cellIterator as $cell) {
        array_push($get, $cell->getValue()); // Menambahkan value ke variabel array $get
      }
      // <-- END

      // Ambil data value yang telah di ambil dan dimasukkan ke variabel $get
      $nis = $get[0]; // Ambil data NIS
      $nama = $get[1]; // Ambil data nama
      $jenis_kelamin = $get[2]; // Ambil data jenis kelamin
      $telp = $get[3]; // Ambil data telepon
      $alamat = $get[4]; // Ambil data alamat

      // Cek jika semua data tidak diisi
      if($nis == "" && $nama == "" && $jenis_kelamin == "" && $telp == "" && $alamat == "")
        continue; // Lewat data pada baris ini (masuk ke looping selanjutnya / baris selanjutnya)

      // Proses simpan ke Database
      // Buat query Insert
      $sql = $pdo->prepare("INSERT INTO siswa VALUES(:nis,:nama,:jk,:telp,:alamat)");
      $sql->bindParam(':nis', $nis);
      $sql->bindParam(':nama', $nama);
      $sql->bindParam(':jk', $jenis_kelamin);
      $sql->bindParam(':telp', $telp);
      $sql->bindParam(':alamat', $alamat);
      $sql->execute(); // Eksekusi query insert
    }

    $numrow++; // Tambah 1 setiap kali looping
  }
}

header('location: index.php'); // Redirect ke halaman awal
?>

Sedikit tambahan penjelasan dari skrip diatas :

$nis = $get[0]; // Ambil data NIS
$nama = $get[1]; // Ambil data nama
$jenis_kelamin = $get[2]; // Ambil data jenis kelamin
$telp = $get[3]; // Ambil data telepon
$alamat = $get[4]; // Ambil data alamat

Yang saya beri warna merah pada skrip diatas, itu merupakan angka index array. Dimana pada File CSV dimulai dari Kolom A, kolom A ini di aliaskan dengan angka nol (0) index array. Dan seterusnya bertambah 1 sampai kolom yang kita pakai. Untuk lebih jelasnya lihat gambar dibawah ini :

Penjelasan - Penjelasan - Cara Membuat Import Data CSV dengan PHP dan MySQL


Sekian untuk catatan kali ini. Apabila ada yang ingin ditanyakan, silahkan tanyakan pada form komentar di bawah ini. Jangan lupa LIKE dan SHARE nya. Terimakasih.


Source Code
Untuk mengunduh source code nya, klik salah satu link dibawah ini
– Download versi PDO : Link download yang sesuai tutorial ini yakni menggunakan fungsi PDO untuk query ke databasenya
– Download versi MySQLi : Link download untuk Anda yang ingin source code versi MySQLi dari tutorial ini


Sumber & Referensi
Dokumentasi Bootstrap : http://getbootstrap.com
Dokumentasi PHPExcel : https://github.com/PHPOffice/PHPExcel/wiki/User%20Documentation

Tutorial import data dari CSV dengan php dan mysql, Tutorial import data dari CSV dengan PHPExcel, Cara import data CSV dengan php dan mysql, import data CSV dengan PHPExcel, import data dari CSV dengan php dan mysql

Import

(Total : 18,374 viewers, 1 viewers today)
cara-membuat-import-data-csv-dengan-php-dan-mysql

ABOUT THE AUTHOR

Interested in android programming, long time focused on web development. Visit My Profile Site at www.rizaldimaulidia.com

POST YOUR COMMENTS

Your email address will not be published. Required fields are marked *

Name *

Email *

Website

44 Comments

  1. Mr.Xxxxxxxx

    Bang, mw tnya ini bs jalan g pake xampp terbaru 2022 ??

  2. ripsan surya

    cara agar nis nya otomatis generate gmna yah,, jadi saya di file csv nya di isi kosong,, pas di import ke database generate otomatis nis nya,,

    trimkasih..

  3. Afa Aldira

    Misi bang mau tanya, itu yang bagian proses import waktu saya coba edit, yang bagian ambil value dari get[0] ke variabel tertentu (di contoh line 46) kok langsung ngambil semua kolom dalam satu row ya? Jadi waktu di print_r nama_variabel yang keluar malah data satu row yang diiterasi ulang tiap baris, yang mana berarti semua data langsung muncul gitu

    Yang salah file csvnya apa gimana ya Bang?
    terima kasih

    • Afa Aldira

      Dan ya, sama kayak komen sebelumnya, error utamanya undefined offset juga soalnya yang get[1], get[2] dst. gak kebaca ada inputnya (karena yang get[0] udah ngambil semua)

      • mungkin ini terjadi karena masalah delimiter atau pemisah csv nya om. coba cek file csv nya, dia pemisahnya apa. biasanya sih csv itu pemisahnya titik koma”;”. cuman bisa beda juga

        • Afa Aldira

          Waktu disave tulisannya csv (comma delimiter) bang, tapi waktu diprint di program keluarnya jadi ‘nama;nis;jeniskelamin ‘dst.

  4. Topan1986

    Insya allah pahala mengalir mas dengan seperti ini,, lanjutkan,.. jika ada donasi sertakan linknya mas,, jika ada rejeki bisa donasi juga,, berguna sekali,, mantab

  5. M Husain

    misi bang mau tanya, kok ada error gini ya
    Undefined offset: 2 in C:\xampp\htdocs\coba2\form.php on line 167
    Undefined offset: 3 in C:\xampp\htdocs\coba2\form.php on line 168
    Undefined offset: 4 in C:\xampp\htdocs\coba2\form.php on line 169
    mohon bantuannya bang

    • undefined index itu error karena data yang dimaksud 2,3,4 tidak ditemukan. coba paste coding form.php nya ke pastebin*com biar saya bisa cek

      • Toto Supriyanto

        Error yang sama ini solusinya bagaimana ya
        Notice: Undefined offset: 1 in D:\xampp\htdocs\import_csv_mysqli\form.php on line 166

        Notice: Undefined offset: 2 in D:\xampp\htdocs\import_csv_mysqli\form.php on line 167

        Notice: Undefined offset: 3 in D:\xampp\htdocs\import_csv_mysqli\form.php on line 168

        Notice: Undefined offset: 4 in D:\xampp\htdocs\import_csv_mysqli\form.php on line 169

        Notice: Undefined offset: 1 in D:\xampp\htdocs\import_csv_mysqli\form.php on line 166

        Notice: Undefined offset: 2 in D:\xampp\htdocs\import_csv_mysqli\form.php on line 167

        Notice: Undefined offset: 3 in D:\xampp\htdocs\import_csv_mysqli\form.php on line 168

        Notice: Undefined offset: 4 in D:\xampp\htdocs\import_csv_mysqli\form.php on line 169

  6. hryandii

    gan link untuk download phpexcel nya udah gak bisa tuh.. ada solusi?

  7. codex314

    Selamat siang bro, berguna banget nih tutorialnya beserta codenya, lengkap pula keterangannya. dan ada satu yang pengen ane tanya bro, apakah memungkinkan kalo misalnya preview datanya itu yang mau kita masukkan itu di pilih dulu bro, lalu baru dimasukkan kedalam Database? kalau bisa kira kira bagaimana ya bro?

    sebelumnya terima kasih banyak bro!

  8. ghatfhaan

    salam sehat dan sukses, bang untuk non aktifkan cek isi kolom agar kolom yg kosong tetap filenya bisa diproses impor gimana ya,mhon pecerahannya

    • kalau mengacu pada coding di tutorial ini, pada file form.php, hapus skrip pada line 203-214, dan line 219

      • ghatfhaan

        mksh udah sy perbaiki sesuai petunjuknya, namun maslah baru lg saat tombol import diklik data tidak terproses import ke database. solusinya gimana ya bang

          • ghatfhaan

            errornya ni bang, Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\xampp\htdocs\import_csv\import.php on line 99

            Warning: Cannot modify header information – headers already sent by (output started at C:\xampp\htdocs\import_csv\import.php:99) in C:\xampp\htdocs\import_csv\import.php on line 106

            apa msh pengaruh klu ada kolom yg msh kosong ya

          • itu sepertinya jumlah parameter di query (:nis, :nama, :jk, dll) tidak sama dengna jumlah $sql->bindParam( nya om. Coba copas ke pastebin*com skrip importnya

  9. andaraaja

    om kalo lebih dari 10 000 data gak bisa ya?
    supaya bisa harus gimana ya bang?

    Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\import_csv\import.php on line 66

    • Bisa aja dengan mengubah setting maximum_execute_time di php nya, dengan cara menambahkan skrip ini pada file import.php :
      set_time_limit(3600);

      simpan di paling atas setelah tag

  10. creat015

    tanya dong gan, ini saya coba dari awal
    preview data (data muncul semua), tapi setelah diklik tombol “Import” kembali ke index.php, nah data hasil importnya ga muncul gan
    saya cek di databasenya juga ga masuk/kesimpan

    saya cek ulang scriptnya saya samakan dgn database dan file csv sama, tidak ada yg beda, tapi tetap gagal import (data ga masuk kedatabase, dan tidak tampil dihalaman index.php nya)

    tidak ada pesan error gan

    mohon bantuannya

    terimakasih

    • Rizaldi Maulidia Achmad

      Tolong kirim kan source code dan databasenya ke saya lewat pesan di fans page fb kami om. Biar saya bisa cek

  11. Audhika R

    halo mas rizaldi,

    saya udah coba kodingannya, tapi hasilnya Hanya File CSV (.csv) yang diperbolehkan. padahal file yg saya preview sudah dalam bentuk .csv. apakah ada yg kodingannya salah yah mas rizaldi? bisa kasih tau letak salah nya dimana? soalnya saya cek satu per satu tidak ada yg salah, atau mungkin saya ada yg kelewat jadi tidak liat script yg salah dibagian mana.

    • Rizaldi Maulidia Achmad

      sudah ada 2 orang yang bilang seperti ini. bisa tolong kirim kan file CSV nya ke saya? kirim lewat fans page fb kami atau ke email admin@mynotescode.com. Biar saya bisa cek. Terimakasih

      • Audhika R

        sudah saya kirim ke email mas rizaldi. mohon bantuannya ya mas rizaldi.

        thanks.

        • Rizaldi Maulidia Achmad

          oke om. sudah saya update skrip nya. cek pada STEP 5 yang buat file form.php. disitu saya update skrip nya (baris ke 113). asalnya seperti ini :
          $tipe_file = $_FILES[‘file’][‘type’]; // Ambil tipe file yang akan diupload
          $tmp_file = $_FILES[‘file’][‘tmp_name’];

          // Cek apakah file yang diupload adalah file CSV
          if($tipe_file == “text/csv”){
          .
          .
          saya ubah jadi seperti ini :
          $nama_file = $_FILES[‘file’][‘name’]; // Ambil nama file y
          $tmp_file = $_FILES[‘file’][‘tmp_name’];
          $ext = pathinfo($nama_file, PATHINFO_EXTENSION); // Ambil ekstensi file yang akan diupload

          // Cek apakah file yang diupload adalah file CSV
          if($ext == “csv”){
          .
          .
          silahkan di coba om. kalau ada error lagi mohon diinfokan ke saya.

          • Audhika R

            works mas rizaldi, brarti kurang script $ext = pathinfo($nama_file, PATHINFO_EXTENSION); dan [‘name’] yg ada di $nama_file.

            terimakasih mas rizaldi atas support dan ilmu singkatnya.

          • Rizaldi Maulidia Achmad

            oke sip sama-sama om. senang bisa membantu 😀

  12. riky

    sudah sesuai petunjuk diatas tapi gagal import gan.
    pesan nya file Hanya File CSV (.csv) yang diperbolehkan
    mohon bantuan nya gan

    • Rizaldi Maulidia Achmad

      yakin itu file type nya .csv ?
      Maaf baru balas om, ga ada notif ke saya nya

  13. f irwan setya k

    mas kalau kita dapat file csv trus dibikin auto upload realtime ke database web gimana ya? terimakasih sebelumnya

    • Rizaldi Maulidia Achmad

      Kalau auto upload gitu susah kayanya om. Soalnya disini kan si file csvnya harus di upload dulu. Dan kalau pun bisa, beban server nya lumayan kalau harus realtime

  14. Takdir Saputro

    ketika file di preview file tidak terdeteksi sebagai csv file, padahal yang di upload sudah csv file

    • Rizaldi Maulidia Achmad

      Coba kirimkan file csv nya ke saya om mau saya coba. Bisa lewat fans page fb atau kirim email ke admin@mynotescode.com

  15. budi san

    Mas gimana ya kok tidak bisa ? selalu ada pesan Hanya File Excel 2007 (.xlsx) yang diperbolehkan

    • Rizaldi Maulidia Achmad

      Mohon maaf om. ternyata ada kesalahan pada skrip form.php nya. sekarang sudah saya perbaiki. silahkan om. Terimakasih

NOTE ARCHIVES