Tolong pilih kategori sesuai, jenis posting (diskusi atau bukan) dan sertakan tag/topik yang sesuai seperti komputer, java, php, mysql, dll. Promosi atau posting tidak pada tempatnya akan kami hapus!
- Bagi Anda yang ingin mendaftar, baca link berikut:
http://diskusiweb.com/discussion/50491/how-to-registrasi-diskusiweb-com-baca-ini-terlebih-dahulu
- Cara menyisipkan kode program supaya tampil rapi dan terformat dengan baik di diskusiweb.com: http://www.diskusiweb.com/discussion/50415/cara-menyisipkan-kode-program-di-diskusiweb-com
- Cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

[ask]import excel ke php

Pagi smua , 
saya mengimportkan data dari excel ke php menggunakan excel_reader, tetapi importnya baru bisa berdasarkan baris. jd column 1 pada excel masuk ke baris pertama column 1 pada table di database. 
Yang saya mau tanyakan, apa ada yg bisa memberi pencerahan kepada saya cara mengimportkan berdasarkan nama column, jd misalnya column nim pada excel masuk ke column nim jga pada database ?

script import perbaris nya seperti ini

<pre lang="php">
// import data excel mulai baris ke-2 (karena baris pertama adalah nama kolom)
for ($i=2; $i<=$baris; $i++)
{
  $layanan = $data->val($i, 1);
  $nama = $data->val($i, 2);
  $jabatan = $data->val($i, 3);
  $jk = $data->val($i, 4);
  $status = $data->val($i, 5);
  $jumlah_anak= $data->val($i, 6);
  $A1 = $data->val($i, 7);
  $A3 = $data->val($i, 8);
  $A5 = $data->val($i, 9);
  $A17 = $data->val($i, 10);
  $pph21 = $data->val($i, 11);
 
  $query = "INSERT INTO pph21 (layanan,nama,jabatan,jk,status,jumlah_anak,A1,A3,A5,A17,pph21) VALUES ('$layanan', '$nama','$jabatan', '$jk', '$status',' $jumlah_anak', '$A1', '$A3', '$A5', '$A17', '$pph21')";
  $hasil = mysql_query($query);
}
</pre>

Comments

  • Sedikit bingung dengan pertanyaannya.

    Bukannya sudah jelas discriptnya, kolom2 yang akan dimasukkan nilainya yaitu, layanan, nama, jabatan dll. dengan value $layanan, $nama, $jabatan dll.

    Dan jika anda ingin memasukkan kolom nim, pastikan juga sesuai dengan urutan yang ada pada kolom excel dan kolom tabel anda.
  • script di atas memang sudah berhasil bang ,
    tp masih ada kekurangan , proses importnya masih berdasarkan urutan. jd misalnya pada excel nama berada di urutan ke 2 , maka di database harus di urutan ke 2 jga. urutan harus sama
    sedangkan saya mau mengimportkan ratusan excel gaji orang ke database dengan format yang berbeda2. 

    bagaimana caranya saya mengimportkan nya berdasarkan judul column excel. jd walaupun data nama di excel berada di column ujung paling kanan maka akan tetap masuk di urutan ke 2 di databasenya.

    Terimakasih , maaf merepotkan
  • edited June 2013
    "jd misalnya pada excel nama berada di urutan ke 2 , maka di database harus di urutan ke 2 jga. urutan harus sama"

    itu kan tinggal cara elo aja bikin query INSERT nya ...

    table_x : nama, alamat ... nama di urutan pertama

    $alamat = 'xyz';
    $nama = 'abc'; ... definisi assignment di urutan kedua

    INSERT table_x VALUE ($nama,$alamat) ... valid
    INSERT table_x VALUES ($nama,$alamat) ... valid
    INSERT INTO table_x VALUE ($nama,$alamat) ... valid
    INSERT INTO table_x VALUES ($nama,$alamat) ... valid

    INSERT table_x (nama,alamat) VALUE ($nama,$alamat) ... valid ... bisa aja gw bikin INSERT nya kaya gini
    INSERT table_x (nama,alamat) VALUES ($nama,$alamat) ... valid
    INSERT INTO table_x (nama,alamat) VALUE ($nama,$alamat) ... valid
    INSERT INTO table_x (nama,alamat) VALUES ($nama,$alamat) ... valid

    INSERT table_x (alamat,nama) VALUE ($alamat,$nama) ... valid ... atau gw balik INSERT nya kaya gini
    INSERT table_x (alamat,nama) VALUES ($alamat,$nama) ... valid
    INSERT INTO table_x (alamat,nama) VALUE ($alamat,$nama) ... valid
    INSERT INTO table_x (alamat,nama) VALUES ($alamat,$nama) ... valid
  • Mungkin maksud anda yang bisa saya pahami seperti ini, jika salah mohon dikoreksi.

    for ($i=2; $i<=$baris; $i++) {
    $layanan = $data->val($i, 1);
    $jabatan = $data->val($i, 2);
    | |
    | |
    | |
    | |
    $pph21 = $data->val($i, 10);
    $nama = $data->val($i, 11); // kolom nama., paling ujung pada excel

    $query = "INSERT INTO pph21 (layanan,nama,jabatan,jk,status,jumlah_anak,A1,A3,A5,A17,pph21) VALUES ('$layanan', '$nama','$jabatan', '$jk', '$status',' $jumlah_anak', '$A1', '$A3', '$A5', '$A17', '$pph21')";

    $hasil = mysql_query($query);
    }
  • Thanks suhu atas tanggapannya .

    tp saya msih bingung dlm memanipulasi query insert yang anda jelaskan pada kasus saya.  

    bagaimana apabila data nama pada excel atau data yang lainnya, kadang berada di urutan ke 2 , kadang 7 , kadang 5 .
    Terkadang jga data tunjangan lembur (tunjangan = A3) ada di excel a tp tidak ada di excel b.
    terkadang jga ada data data yg tdk di perlukan.

    jd data excelnya tidak ada format defaultnya. apakah bisa dengan cara di ats .

    yang terbayang sama saya, saya harus mengembangkan scriptnya utk membaca excel berdasarkan judul column. tidak berdasarkan baris lg .   
    $nama = $data->val($i, 2);
    jd ini mksudnya data baris ke 2 column 2 disimpen di $nama. tp si nama ini tidak selalu d column ke 2 pada setiap excel.

    logika saya seperti ini .
    contoh : data lembur,
    jd saat mengimport dia akan membaca dlu, diantara judul2 column excel itu ada data lembur ga ,
    jika ada maka akan mengecek lg , d database ada data lembur jga tidak .
    maka jika ada akan di insertkan. Apa saya benar ? jika benar bagaimana scriptnya .
    please help me

  • edited June 2013
    ntar ... ini mesti dipisah dulu ...
    elo mau mengikuti alur proses yg mana :

    [1] membiarkan user membuat format sendiri sebebas-bebasnya ...
    artinya elo bakal payah dalam kodingnya
    tiap hari atau tiap kirim laporan bentuknya bisa berubah-ubah
    artinya elo mesti koding berulang kali, merubah koding atau menambah koding sesuai format yg masuk

    [2] membuat template standar yg bisa di download user, lalu user tinggal mengisi dan mengupload
    ini pemrogramannya lebih mudah, bentuknya cuma satu

    [3] meminta user per bagian menentukan format standar nya, dan jika sudah ditetapkan tidak boleh dirubah
    ini pemrogramannya tinggal elo membuat perbedaan sedikit utk tiap bagian



    kalo liat cerita elo ...
    elo pake skema yg pertama ...

    kalo bener ... elo lagi bunuh diri :D

    beri alternatif pilihan 2 atau 3 ... suruh pilih, baru koding

    kalo elo ikutin pola pertama ... koding elo kagak bakal ada selesainya
  • @ilhamdong ;
    bener  bgt , tp sayang datanya berbeda2 tiap excelnya. 
    misalnya nama itu , tidak selalu berada di colum paling depan (1) atau di paling belakang
    thanks suhu

    haha ya , bener saya memilih yg pertama, 
    soalnya datanya yang mw digabung kira2 ada 10 ribu orang. saya jga udh pernah usul utk membuat templete standar tp ditolak krn saya jga tidak punya kewenangan utk merubahnya .

    jd gmna suhu . 
    apa anda tau script nya utk import ini berdasarkan judul column nya ?
  • edited June 2013
    tanya aja mas ...

    pertama kali operator A bikin header :
    Nama | Alamat | No Telp

    kali kedua operator A bikin header :
    Nama Lengkap | Alamat Rumah | Alamat Kantor | Nomer Telepon

    kali ketiga operator A bikin header :
    Nama Pegawai | Almt Rmh | Almt Ktr | No Telephone | No Fax

    kali keempat operator A bikin header :
    Peg | Istri | Almt Rmh / Almt Ktr | No Tlp | No Fax

    yakin lo, baca header juga valid ?
    itu asumsi upload dari orang yg sama ...

    belum lagi, lain kali operator A, upload kagak pake header, model card

    Nama :
    Alamat :
    Telp :
    Fax :

    Nama :
    Alamat :
    Telp :
    Fax :


    itu kalo dijadikan kolom yg sama ...
    lain hari punya kerjaan, pikirnya biar ringkas, copas jadi 2 kolom

    Nama :                     | Nama :
    Alamat :
                       | Alamat :
    Telp :                     | Telp :
    Fax :                      | Fax :

    Nama :                     | Nama :
    Alamat :
                       | Alamat :
    Telp :                     | Telp :
    Fax :                      | Fax :

    mau selesai kapan koding nya ?
    ini real lho kondisinya bisa kejadian kaya gitu
    kalo dari awal kagak di-standar-kan

    "// import data excel mulai baris ke-2 (karena baris pertama adalah nama kolom)"
    itu juga asumsi elo sendiri ...
    bagaimana kalo baris 1 kosong, header di baris kedua ?
    atau bahkan di baris ketiga ?

    elo ngadepin K/L atau swasta ?
  • edited June 2013
    Mungkin anda bisa membaca dokumentasinya lebih lengkap di

    https://code.google.com/p/php-excel-reader/wiki/Documentation

    disana juga ada pilihan mengambil data berdasarkan nama kolom

    $data->val(10,'AZ');


    Dan setuju dengan yang diatas, karena ini berkaitan dengan database, seharusnya ada standarisasi dari awal dalam pembuatan database, agar tidak kerepotan nanti didepannya.


  • bener jga yang mas katakan , terimakasih. 
    yang menganjel di pikiran saya jga begitu ,
    Pdhal mksud dari aplikasi ini cma mengumpulkan data aja di database trus di export jd excel lg. 
    memang ada beberapa yang judul headernya berbeda, baris header nya jga berbeda.
    dan dibwh data . misalnya lembur td , di bwhnya ada jumlahnya yang pasti ikut ke import jga, 
    mungkin nanti saya akan mencoba berdialog lg dengan bagian yang meminta dibuatkan aplikasi tersebut.


    Tp jika asumsinya , 
    sudah ada default templetenya , mana tau ntar dpt dibuat templete standarnya .
    nama header sama, baris header sama.
    yg berbeda cuma urutannya column di excel saja .  
    Bagaimana ya suhu script nya utk mengimport berdasarkan column tersebut krn bagaimanapun jga setiap orang rincian gajinya pasti berbeda2 ?


  • edited June 2013
    baca dulu header nya, masukan ke array ...
    pake loop

    $row_header = 1;
    $col = 1;
    $header = array();

    while( $data->val($row_header, $col) !== '' ) {
      $header[$col] = $data->val($row_header, $col);
      $col++;
    }

    elo sudah dapat koleksi nama header nya

    tinggal elo pake di pembacaan barisnya :

    $rec = array();
    $rec[$header[1]] = $data->val($i, 1);
    $rec[$header[2]] = $data->val($i, 2);
    ... dst ...

    lalu jalankan : http://php.net/manual/en/function.extract.php

    semisal, header yg kebaca :

    $header = array(
      1 => 'Nama',
      2 => 'Alamat'
    );

    $rec bakal jadi :

    $rec = array(
      'Nama' => 'abc',
      'Alamat' => 'xyz'
    );

    kalo elo extract, jadi :

    $Nama = 'abc';
    $Alamat = 'xyz';

    ini dengan asumsi kalo judul-judul yg ada di header hanya terdiri dari 1 kata
    kalo lebih dari 1 kata ... bakal kacau hasilnya
    bisa elo proses penamaan variabelnya,
    elo ulik dah looping proses pembacaan header nya
  • mohon maaf, ini saya ambil contoh saja

    misal file excel1 : kolomnya seperti dibawah

    layanan | nama | jabatan

    misal file excel2 :  kolomnya seperti dibawah

    jabatan | layanan | nama

    apakah seperti ini yang anda maksud?
  • ok terimakasih master ,
    saya coba ulik2 dlu
Sign In or Register to comment.