Import data excel ke database berhasil, namun terdapat data yang kosong di bagian akhir

Halo teman-teman koding mohon bantuan nya , saya mempunyai kendala pada Fitru Import Data dari Excel, setelah berhasil ter-impor namun data yang kosong ikut terimport seperti ini :

1. Gambar Excel

Screenshot 2022-12-27 222039.png

2. Tampilan Database nya

Screenshot 2022-12-27 222101.png

3. Codingan di Controller seperti ini .

public function upload()
  {
    if(isset($_FILES["file"]["name"])){
      $file_tmp = $_FILES['file']['tmp_name'];
      $file_name = $_FILES['file']['name'];
      $file_size = $_FILES['file']['size'];
      $file_type = $_FILES['file']['type'];

      $object = PHPExcel_IOFactory::load($file_tmp);

        foreach($object->getWorksheetIterator() as $worksheet){
          $highestRow = $worksheet->getHighestRow();
          $highestColumn = $worksheet->getHighestColumn();

          for($row=7; $row<=$highestRow; $row++){

            $mapel = $worksheet->getCellByColumnAndRow(1, $row)->getValue();
            $kompetensi = $worksheet->getCellByColumnAndRow(2, $row)->getValue();
            $tingkat = $worksheet->getCellByColumnAndRow(3, $row)->getValue();
            $semester = $worksheet->getCellByColumnAndRow(4, $row)->getValue();
            $kode = $worksheet->getCellByColumnAndRow(5, $row)->getValue();
            $isikd = $worksheet->getCellByColumnAndRow(6, $row)->getValue();
            $status = $worksheet->getCellByColumnAndRow(7, $row)->getValue();

            $data[] = array(
              'mapel_kd' => $mapel,
              'kompetensi' => $kompetensi,
              'tingkat' => $tingkat,
              'semester' => $semester,
              'kode' => $kode,
              'isi_kd' => $isikd,
              'status_kd' => $status,
            );
          }
        }

        $this->db->insert_batch('tb_kdpengetahuan', $data);
        $message = array(
          'message' => '<div class="alert alert-success">Import data berhasil </div>'
        );

        $this->session->set_flashdata($message);
        redirect('kd_pengetahuan');
    }else{
      $message = array(
        'message' => '<div class="alert alert-danger">Import data tidak berhasil </div>'
      );

      $this->session->set_flashdata($message);
      redirect('kd_pengetahuan');
    }
  }

Mohon pencerahannya teman-teman karena ini masuk ke tampilan datatables di front end.

Terima kasih

avatar muhammadrifkipermana_google
@muhammadrifkipermana_google

3 Kontribusi 1 Poin

Diperbarui 1 tahun yang lalu

3 Jawaban:

<div>Saya tidak menemukan dokumentasi dari PHPExcel.<br><br>Sekilas info, PHPExcel kalau dilihat di reponya sudah diarchive, sesuai rekomendasiknya coba menggunakan <a href="https://github.com/PHPOffice/PhpSpreadsheet">PHPSpreadsheet</a> untuk bermain dengan Excel di PHP<br><br>Tips untuk kasus ini:<br>1. cek di mana loop yang semestinya tidak "berulang" perhatikan sejak foreach pertama, mungkin ada yang jalan berkali kali<br>2. sebelum memasukkan data cek jika data kosong, tidak perlu dimasukkan ke database<br><br>Tips yang kedua, hanya jika tidak menemukan masalah pertama</div>

avatar hilmanski
@hilmanski

2685 Kontribusi 2135 Poin

Dipost 1 tahun yang lalu

Tanggapan

PHPExcel sudah di load dr library nya kak cuma saya lupa ss ada d head function controller nya.. Btw thanks tips nya akan sy coba kak

Jawaban Terpilih

<div>File excel itu, biarpun baris-baris di bawah terlihat kosong, tapi akan tetap diperlakukan sebagai highest row index, kalau anda pernah mengisi data di sana kemudian dihapus. Coba tekan Ctrl+End di file Excel anda, dan lihat cursornya berakhir di mana.<br><br>Saran saya, sorot dan copy data yang diinginkan (A1 sampai H12), lalu paste di file baru dan simpan. File itu lah yang diberikan ke PHP untuk diolah.</div>

avatar danielwilianto
@danielwilianto

16 Kontribusi 17 Poin

Dipost 1 tahun yang lalu

Tanggapan

Ohh begitu oke baru tau saya soal itu karena memang saya menggunakan hasil paste file format sebelumnya. Terima kasih info nya kak, akan saya coba saran dan masukannya.

<div>Kalo saya biasanya kasih validasi sebelum di masukkan ke variabel array. Jadi memastikan bahwa nilainya itu ada dan ga kosong. Mungkin bisa dicoba seperti ini :<br><br></div><pre>for($row=7; $row&lt;=$highestRow; $row++) { $mapel = $worksheet-&gt;getCellByColumnAndRow(1, $row)-&gt;getValue(); $kompetensi = $worksheet-&gt;getCellByColumnAndRow(2, $row)-&gt;getValue(); $tingkat = $worksheet-&gt;getCellByColumnAndRow(3, $row)-&gt;getValue(); $semester = $worksheet-&gt;getCellByColumnAndRow(4, $row)-&gt;getValue(); $kode = $worksheet-&gt;getCellByColumnAndRow(5, $row)-&gt;getValue(); $isikd = $worksheet-&gt;getCellByColumnAndRow(6, $row)-&gt;getValue(); $status = $worksheet-&gt;getCellByColumnAndRow(7, $row)-&gt;getValue();

// Memastikan setiap variabelnya memiliki value, sebelum dimasukkan ke variabel array
if (
	$mapel !== &#039;&#039; &amp;amp;&amp;amp; 
	$kompetensi !== &#039;&#039; &amp;amp;&amp;amp; 
	$tingkat !== &#039;&#039; &amp;amp;&amp;amp; 
	$semester !== &#039;&#039; &amp;amp;&amp;amp; 
	$kode !== &#039;&#039; &amp;amp;&amp;amp; 
	$isikd !== &#039;&#039; &amp;amp;&amp;amp; 
	$status !== &#039;&#039;
) {
	$data[] = array(
	  &#039;mapel_kd&#039; =&amp;gt; $mapel, 
	  &#039;kompetensi&#039; =&amp;gt; $kompetensi,
	  &#039;tingkat&#039; =&amp;gt; $tingkat,
	  &#039;semester&#039; =&amp;gt; $semester,
	  &#039;kode&#039; =&amp;gt; $kode,
	  &#039;isi_kd&#039; =&amp;gt; $isikd,
	  &#039;status_kd&#039; =&amp;gt; $status,
	);		
}

}</pre><div><br>Semoga berhasil.</div>

avatar ahanafi
@ahanafi

815 Kontribusi 554 Poin

Dipost 1 tahun yang lalu

Login untuk ikut Jawaban