Upload Data di CodeIgniter

Selamat pagi semuanya. Saya ingin bertanya. Saya sedang membuat proses upload data image ke dalam database sebagai cover sebuah buku, tapi saat saya lakukan simpan data, datanya tidak masuk ke database. Gimana ya caranya supaya bisa upload file dengan benar dan masuk ke database? Mohon bantuannya.

Controller

function tambah()
	{
		if(isset($_POST['submit']))
		{
			$kategori_id = $this->input->post('kategori_id');
			$penerbit_id = $this->input->post('penerbit_id');
			$judul = $this->input->post('judul');
			$deskripsi = $this->input->post('deskripsi');
			$pengarang = $this->input->post('pengarang');
			$tebal_hlm = $this->input->post('tebal_hlm');
			$harga = $this->input->post('harga');
			$stok = $this->input->post('stok');
			$filecover = $this->upload->do_upload('filecover');
			$hasil = $this->upload->data();
			$data = array(
				'kategori_id' => $kategori_id,
				'penerbit_id' => $penerbit_id,
				'judul' => $judul,
				'deskripsi' => $deskripsi,
				'pengarang' => $pengarang,
				'tebal_hlm' => $tebal_hlm,
				'harga' => $harga,
				'stok'=> $stok,
				'filecover' => $filecover
				);
			$this->model_buku->tambah($data);
			redirect('buku');
		}
		else
		{
			$this->load->model('model_kategori');
			$this->load->model('model_penerbit');
			$data['penerbit'] = $this->model_penerbit->tampil_data()->result();
			$data['kategori'] = $this->model_kategori->tampil_data()->result();
			$this->template->load('templates/template_a','buku/input_data', $data);
		}
	}

view


<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<h3>Tambah Data Buku</h3><hr/>

<body>
	<div id="body">
		<form action="<?php echo site_url('buku/tambah') ?>" method="post">
			<table class="table table-bordered">
				<tr>
					<td>Kategori</td>
					<td><select name="kategori_id" class="form-control">
						<?php
						foreach ($kategori as $k)
						{
							echo "<option value='$k->kategori_id'>$k->nama_kategori</option>";
						}
						?>
					</select></td>
				</tr>
				<tr>
					<td>Penerbit</td>
					<td><select name="penerbit_id" class="form-control">
						<?php
						foreach ($penerbit as $p)
						{
							echo "<option value='$p->penerbit_id'>$p->nama</option>";
						}
						?>
					</select></td>
				</tr>
				<tr>
					<td>Judul</td>
					<td><input type="text" class="form-control" name="judul" placeholder="Judul Buku"></td>
				</tr>
				<tr>
					<td>Deskripsi</td>
					<td><input type="text" class="form-control" name="deskripsi" placeholder="Deskripsi"></td>
				</tr>
				<tr>
					<td>Pengarang</td>
					<td><input type="text" class="form-control" name="pengarang" placeholder="Pengarang"></td>
				</tr>
				<tr>
					<td>Halaman</td>
					<td><input type="text" class="form-control" name="tebal_hlm" placeholder="Tebal Halaman"></td>
				</tr>
				<tr>
					<td>Harga</td>
					<td><input type="text" class="form-control" name="harga" placeholder="Harga"></td>
				</tr>
				<tr>
					<td>Stok</td>
					<td><input type="text" class="form-control" name="stok" placeholder="Stok"></td>
				</tr>
				<tr><td>Filecover</td>
					<td><input type="file" name="filecover" size="20" /></td>
				</tr>
				<tr>
					<td colspan="2"><button type="submit" class="btn btn-success btn-sm" name="submit">Daftar</button>
					<?php echo anchor('welcome', 'Kembali', array('class' => 'btn btn-primary btn-sm')) ?></td>
				</tr>
			</table>
		</form>
	</div>
</body>
</html>

avatar iiks
@iiks

14 Kontribusi 0 Poin

Diperbarui 7 tahun yang lalu

4 Jawaban:

pertama di view kurang enctype="multipart/form-data",

ke 2 di controler sebelum upload perlu set config lebih lanjut cek https://www.codeigniter.com/userguide3/libraries/file_uploading.html

avatar sifai
@sifai

80 Kontribusi 24 Poin

Dipost 7 tahun yang lalu

maaf mas @sifai, saya sudah coba tapi hasilnya masih sama. apa saya yg salah atau memang tdk bisa. ini code cont dan view setelah saya ubah

cont


function tambah()
	{
		if(isset($_POST['submit']))
		{
			$config['upload_path'] = './assets/img/anggota/';
        	$config['allowed_types'] = 'gif|jpg|png';
        	$config['max_size']	= '1000';
        	$config['max_width']  = '2000';
        	$config['max_height']  = '1024';

            $this->upload->initialize($config);
            if(!$this->upload->do_upload('gambar'))
            {
            	$gambar="";
            }
            else
            {
                $gambar=$this->upload->file_name;
            }
			$kategori_id = $this->input->post('kategori_id');
			$penerbit_id = $this->input->post('penerbit_id');
			$judul = $this->input->post('judul');
			$deskripsi = $this->input->post('deskripsi');
			$pengarang = $this->input->post('pengarang');
			$tebal_hlm = $this->input->post('tebal_hlm');
			$harga = $this->input->post('harga');
			$stok = $this->input->post('stok');
			//$filecover = $this->upload->do_upload('filecover');
			//$hasil = $this->upload->data();
			$data = array(
				'kategori_id' => $kategori_id,
				'penerbit_id' => $penerbit_id,
				'judul' => $judul,
				'deskripsi' => $deskripsi,
				'pengarang' => $pengarang,
				'tebal_hlm' => $tebal_hlm,
				'harga' => $harga,
				'stok'=> $stok,
				'filecover' => $gambar
				);
			$this->model_buku->tambah($data);
			redirect('buku');
		}
		else
		{
			$this->load->model('model_kategori');
			$this->load->model('model_penerbit');
			$data['penerbit'] = $this->model_penerbit->tampil_data()->result();
			$data['kategori'] = $this->model_kategori->tampil_data()->result();
			$this->template->load('templates/template_a','buku/input_data', $data);
		}
	}

view

<form action="<?php echo site_url('buku/tambah') ?>" method="post" enctype="multipart/form-data">

avatar iiks
@iiks

14 Kontribusi 0 Poin

Dipost 7 tahun yang lalu

Jawaban Terpilih

tahapan debugnya : 1. cek pastikan file dari client terkirim ke server ini tadi di form harus ada enctype. cara pastikan liat di bagian network (debug f12 di browser) nanti kliatan ktika submit itu data apa saja yg dikirim. sudah kekirim belum filenya ?

2. di servernya/controller pastikan sudah menerima filenya bisa salah karena salah name, klo diatas kemungkinan salah. di view input type file name='filecover' tapi di controler yang baru kamu tunjukin upload('gambar') harusnya sama . mau filecover/gambar name di view dan controller disamakan.

3. sekarang masalahnya dimana perjelas, filenya keupload ngga di folder ? datanya masuk ngga di database ? ini 2 kasus yang berbeda.

avatar sifai
@sifai

80 Kontribusi 24 Poin

Dipost 7 tahun yang lalu

mohon maaf mas @sifai. itu karena kesalahan saya memberi name yang tidak sama. setelah saya menyamakan kedua namenya, datanya sudah tersimpan ke database maupun ke foldernya. terima kasih mas, sangat membantu.

avatar iiks
@iiks

14 Kontribusi 0 Poin

Dipost 7 tahun yang lalu

Login untuk ikut Jawaban