Postingan lainnya
Kelas Premium!
Belajar bikin website dari nol sekarang
Gunakan kupon "lebihcepat" untuk diskon 25%!
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>
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
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">
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.
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.