Tolong pilih kategori sesuai, jenis posting (pertanyaan atau bukan) dan sertakan tag/topik yang sesuai misal komputer, php, mysql, dll.
Promosi atau posting tidak pada tempatnya akan kami hapus.
Mencantumkan kode program di posting Anda, tolong ikuti aturan yang sesuai, baca http://diskusiweb.com/discussion/39204/aturan-cara-menyisipkan-kode-program-di-diskusiweb

Baca cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

[SOLVED] Error - Import data ke MySql dari File Excel (PHP Excel Reader)

Newbie nih, mohon bantuannya.

Masalah:
  • Waktu import data ke mysql pake script nya PHP Excel Reader, hasil import datanya aneh. Kemungkinan kesalahan di looping, tapi belum nemu 8-|
  • Record yang keimport dari file excelnya cuma record 1-9, kemudian record 10 -12 dilompatin, lanjut lagi record 13-21, tiba-tiba lompat record 26


Berikut scriptnya


//Script Ambil Data nya

<?php
     include_once("../class/class_getdata.php");
     $koneksi = new getData();
     $koneksi->koneksi();
     $sql = "SELECT kd_kelas,nama_kelas FROM kelas";
     $koneksi->query($sql);
     $hasilArray = $koneksi->ambilArray();
     $option = "";
     foreach($hasilArray as $index=>$data)
       {
       $kd_kelas = $data['kd_kelas'];
       $nama_kelas = $data['nama_kelas'];
       $option .=  "<option value=\"$kd_kelas\">".$nama_kelas."</option>";
       }

?>


//Form HTML nya

<form name="upload_nilai" method="post" enctype="multipart/form-data" action="upload_excel_send.php">
                    <div id="title-form-nilai">Pilih Kelas </div>
                    <select name="kd_kelas" class="input-nilai"><option value="">...</option><?php echo $option; ?></select>
                    <div id="title-form-nilai">Pilih File Excel: </div>
                    <input name="file_nilai" class="input-nilai" type="file" />
                    <div id="title-form-nilai"><input type="submit" name="upload_file_nilai" class="input-nilai" value="Upload" /></div>
</form>


//Script Action dari Form nya

<?php

...

   //Script Import Data Excel nya


    include("../class/excel_reader.php");
    $data = new Spreadsheet_Excel_Reader($_FILES['file_nilai']['tmp_name']);
    $baris = $data->rowcount($sheet_index=0);
   
    $kd_mp = $_SESSION["kd_mp"];
    $kd_kelas = $_POST["kd_kelas"];
    for ($i=1; $i<=$baris; $i++)
    {
        $nis = $data->val($i,1); //ambil data kolom ke-1 file .xls
        $nilai = $data->val($i,3); //ambil data kolom ke-3 file .xls
       
        include_once("../class/class_getdata.php");
        $koneksi = new getData();
        $koneksi->koneksi();
        $sql = "INSERT INTO nilai VALUES('','$nis','$kd_mp','$nilai','$id_thn_ajaran','$kd_kelas')";
        $koneksi->query($sql);
?>


Tanggapan

  • kayanya yg bermasalah php excel reader nya ...
  • coba di echo dolo :D jadi kelihatan yang kebaca apa.

    nanti kan terlihat yang bermasalah dimana
  • setuju.. saya punya script exel reader dan jadi we... naruh file exelnya mungkin..
  • Saya tes echo query sql insert nya, hasilnya begini:
    image


    Tapi yang masuk ke SQL server nya:

    image
  • jah ... yg jadi masalah kan lompat yg dibaca ... bukan hasil ...
  • edited March 2012
    Iya, nah itu dia yang buat bingung :-S

    for ($i=1; $i<=$baris; $i++)
    {
       $nis = $data->val($i,1);
       $nilai = ceil($data->val($i,2));
       echo $i." ";
       echo $sql = "INSERT INTO nilai VALUES('','$nis','$kd_mp','$nilai','$id_thn_ajaran','$kd_kelas')";
       echo "<br />";
       $koneksi->query($sql);
    }

    Yang dibaca dari excel udah diecho, hasilnya keluar berurut 1-28 record, dan benar. Tapi waktu query dieksekusi ke MySql, hasil query yang masuk lompat-lompat dan beberapa sepertinya tidak tereksekusi.

    Kira-kira mana lagi yang harus diecho ya biar kelihatan error nya (:|
  • edited March 2012
    ndak paham yak ?

    insert elo ndak ada masalah
    loop juga kagak ada masalah

    yg gw curiga :
    - ada format tertentu di xls yg ndak dikenali ama reader
    - otomatis row itu diabaikan

    gimana mau bisa di insert kalo baca aja tidak bisa ?

    coba dolo deh di cek row per row, field per field di xls nya
    ada beda apa di baris yg hilang
  • edited March 2012
    .
  • Hehehe, maklum kakak.

    Udah dicek, semuanya sama. Kalo gak dikenali sama si reader, bukannya baris ini gak kebaca sempurna ya?

    $nis = $data->val($i,1);
    $nilai = ceil($data->val($i,2));


    Tapi di situ, waktu diecho, semuanya masuk kok, kebukti kl semua isi fieldnya ada 28 record tampil :(

    Setelah diread, baru eksekusi baris ini kan? > $sql = "INSERT INTO nilai VALUES('','$nis','$kd_mp','$nilai','$id_thn_ajaran','$kd_kelas')"

    :D
  • nah itu kan yang ditampilkan... querynya.. belum tentu query itu bekerja mungkin...

    aku ga tau.. cuma coba cek data di exel yang tdak bisa masuk ke database.. mbok ada carakter aneh/unix atau apalah... 

  • <?php
    // menggunakan class phpExcelReader
    include "excel_reader2.php";
    // koneksi ke mysql
    mysql_connect("localhost", "root", "ppppppppp");
    mysql_select_db("nama-database");
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">;
    <html xmlns="http://www.w3.org/1999/xhtml">;
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>
     
    <body>
    <form action="customer.php" method="post" enctype="multipart/form-data" id="export">
    Silakan Pilih File Excel:
    <input name="kode" type="hidden" id="kode" value="1" />
    <input name="file" type="file" id="file">
    <input name="upload" type="submit" value="Import">
    </form>
     
     
    <?
    if($_POST['kode']==1){
    // membaca file excel yang diupload
    $data = new Spreadsheet_Excel_Reader($_FILES['file']['tmp_name']);
     
    // membaca jumlah baris dari data excel
    $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++)
    {
    $nama=$data->val($i, 1);
    // membaca data nim (kolom ke-1)
    $ttl= $data->val($i, 2);
    // membaca data nama (kolom ke-2)
    $alamat=$data->val($i, 3);
    $instansi=$data->val($i, 4);
    $no_ktp=$data->val($i, 5);
    $no_npwp=$data->val($i, 6);
    $no_tdp=$data->val($i, 7);
    $no_siup=$data->val($i, 8);
    $no_hp=$data->val($i, 9);
    $no_telp=$data->val($i, 10);
    $email=$data->val($i, 11);
    $ket=$data->val($i, 12);
     
     
    // setelah data dibaca, sisipkan ke dalam tabel mhs
    $query = "INSERT INTO customer (nama,ttl,alamat,instansi,no_ktp,no_npwp,no_tdp,no_siup,no_hp,no_telp,email,ket) VALUES ('$nama','$ttl','$alamat','$instansi','$no_ktp','$no_npwp','$no_tdp','$no_siup','$no_hp','$no_telp','$email','$ket')";
    $hasil = mysql_query($query);
     
    // 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 "<h3>Proses import data selesai.</h3>";
    echo "<p>Jumlah data yang sukses diimport : ".$sukses."<br>";
    echo "Jumlah data yang gagal diimport : ".$gagal."</p>";
    }
    ?>
    </body>
    </html>


    coba nih.. aku ada.. kalo file exel readernya sepertinya sama lho..
  • edited March 2012
    Solved. Trims mas2 bro yang udah bantuin :D

    Ternyata keteledoran saya waktu testing input data manual ke tabel lain yang berelasi dengan tabel ini, copas mentah2 dari excel, ada karakter yang tersembunyi > \r\n

    Script nya ternyata gak bermasalah :D

    Cuma karena ini tabel berelasi, jadi gagal tiap ada id yang ketambahan karakter ini > \r\n
  • baguslah.. :-)


Sign In or Register to comment.