Postingan lainnya
Kelas Premium!
Belajar Javascript untuk website
Gunakan kupon "mulaijs" untuk diskon 75 ribu!
Upload & edit image di ci
Saya mendapat referensi dari https://www.petanikode.com/codeigniter-upload/ dan telah berhasil melakukan proses upload image. Sekarang saya terkendala di proses update(). saya menggunakan array (berbeda dengan referensi yang saya cantumkan)
dari referensi mengatakan perlu menambah yang dibawah ini didalam upload()
if (!empty($_FILES["image"]["name"])) {
$this->image = $this->_uploadImage();
} else {
$this->image = $post["old_image"];
}
karena saya menggunaka array saya ubah menjadi seperti dibawah ini
function UpdateMobil(){
$dFormDist = array(
'nmr_polisi' => $this->input->post('nmr_polisi',true),
'merk' => $this->input->post('merk',true),
'tipe' => $this->input->post('tipe',true),
'warna' => $this->input->post('warna',true),
'seat' => $this->input->post('seat',true),
if (!empty($_FILES["foto_mobil"])) {
'foto_mobil' = $this->_uploadImage()
} else {
'foto_mobil' = $post["old_image"];
}
'bbm' => $this->input->post('bbm',true),
'kps_bbm' => $this->input->post('kps_bbm',true),
'knsum_bbm' => $this->input->post('knsum_bbm',true),
'kps_mesin' => $this->input->post('kps_mesin',true),
'tahun_klr' => $this->input->post('tahun_klr',true),
'tgl_pajak' => date("Y-m-d H:i", strtotime($this->input->post('tgl_pajak',true))),
'asuransi' => $this->input->post('asuransi',true),
'tgl_asuransi' => date("Y-m-d H:i", strtotime($this->input->post('tgl_asuransi',true)))
);
$table = 'ms_mobil';
$field = 'id';
$Msg = $this->mAjax->update_($table,$dFormDist,$field,$this->input->post('ID',true));
//$Msg = $this->mAjax->update_($table,$dFormDist);
header('Content-Type: application/json');
echo json_encode($Msg);
}
lalu dari referensi juga menggunakan field input berbeda dengan saya, berikut yang dari referensi
<div class="form-group">
<label for="name">Photo</label>
<input class="form-control-file <?php echo form_error('image') ? 'is-invalid':'' ?>"
type="file" name="image" />
<input type="hidden" name="old_image" value="<?php echo $product->image ?>" />
<div class="invalid-feedback">
<?php echo form_error('image') ?>
</div>
</div>
lalu saya sesuaikan dengan yang saya punya
<div class="form-group">
<label for="exampleInputFile" class="col-sm-2 control-label">Upload Gambar</label>
<input type="file" id="exampleInputFile" name="foto_mobil" class="col-sm-10">
<input type="hidden" name="old_image" value="<?php echo $uploads->foto_mobil ?>" />
<div class="invalid-feedback">
<?php echo form_error('foto_mobil') ?>
</div>
</div>
lalu saya binggung dengan berikut, <input type="hidden" name="old_image" value="<?php echo $product->image ?>" /> $produk nya dapat darimana? dan image nya dapat darimana?"
sekarang permasalahan inti saya. jika saya mengunakan
if (!empty($_FILES["foto_mobil"])) {
'foto_mobil' = $this->_uploadImage()
} else {
'foto_mobil' = $post["old_image"];
}
tombol form pada sistem tidak akan bekerja (tidak menampilkan form) lalu jika saya mengkomen nya, form akan menampilkan kesalahan berikut A PHP Error was encountered Severity: Notice
Message: Undefined variable: uploads
Filename: Parameter/fk_mobil.php
Line Number: 134
Backtrace:
File: C:\xampp\htdocs\sewa_mobil\application\views\Konten\Parameter\fk_mobil.php Line: 134 Function: _error_handler
File: C:\xampp\htdocs\sewa_mobil\application\controllers\Parameter.php Line: 288 Function: view
File: C:\xampp\htdocs\sewa_mobil\index.php Line: 315 Function: require_once
A PHP Error was encountered Severity: Notice
Message: Trying to get property of non-object
Filename: Parameter/fk_mobil.php
Line Number: 134
Backtrace:
File: C:\xampp\htdocs\sewa_mobil\application\views\Konten\Parameter\fk_mobil.php Line: 134 Function: _error_handler
File: C:\xampp\htdocs\sewa_mobil\application\controllers\Parameter.php Line: 288 Function: view
File: C:\xampp\htdocs\sewa_mobil\index.php Line: 315 Function: require_once
" />
Saya juga menggunakan javascript yang hanya untuk alur/mempercantik tampilan saja (tidak terlalu berpengaruh untuk proses ini (karena saat saya menyelesaikan upload nya tidak ada javascript yang saya ubah)
Mohon bantuannya dari para master. saya perlu ilmunya untuk Tugas Akhir kuliah saya. Terimakasih banyak sebelumnya
sebagai tambahan berikut adalah upload yang saya punya dan berhasil saya contoh dari referensi
function SimpanMobil(){
$dFormDist = array(
'nmr_polisi' => $this->input->post('nmr_polisi',true),
'merk' => $this->input->post('merk',true),
'tipe' => $this->input->post('tipe',true),
'warna' => $this->input->post('warna',true),
'seat' => $this->input->post('seat',true),
'bbm' => $this->input->post('bbm',true),
'kps_bbm' => $this->input->post('kps_bbm',true),
'knsum_bbm' => $this->input->post('knsum_bbm',true),
'kps_mesin' => $this->input->post('kps_mesin',true),
'tahun_klr' => $this->input->post('tahun_klr',true),
'tgl_pajak' => date("Y-m-d H:i", strtotime($this->input->post('tgl_pajak',true))),
'asuransi' => $this->input->post('asuransi',true),
'tgl_asuransi' => date("Y-m-d H:i", strtotime($this->input->post('tgl_asuransi',true))),
'foto_mobil' => $this->_uploadImage()
);
$table = 'ms_mobil';
$field = 'id';
$Msg = $this->mAjax->insert_($table,$dFormDist);
header('Content-Type: application/json');
echo json_encode($Msg);
}
4 Jawaban:
Jawaban Terpilih
Kalo dilihat dari <a href='https://github.com/petanikode/tutorial-codeigniter/blob/tutorial-6/application/views/admin/product/list.php'>reponya</a>, $product itu data looping dari $products, dan $products itu data yang dikirim dari controller.
mungkin harus disesuaikan saat looping datanya ke table, variable yang mas gunain.
dan untuk kode ini:
<pre> if (!empty($_FILES["foto_mobil"])) { 'foto_mobil' = $this->_uploadImage() } else { 'foto_mobil' = $post["old_image"]; } </pre>
sebaiknya ditaro diatas $table = 'ms_mobil', hasilnya seperti ini:
<pre> function UpdateMobil(){
$dFormDist = array(
'nmr_polisi' =&gt; $this-&gt;input-&gt;post('nmr_polisi',true),
'merk' =&gt; $this-&gt;input-&gt;post('merk',true),
'tipe' =&gt; $this-&gt;input-&gt;post('tipe',true),
'warna' =&gt; $this-&gt;input-&gt;post('warna',true),
'seat' =&gt; $this-&gt;input-&gt;post('seat',true),
'foto_mobil' =&gt; NULL,
'bbm' =&gt; $this-&gt;input-&gt;post('bbm',true),
'kps_bbm' =&gt; $this-&gt;input-&gt;post('kps_bbm',true),
'knsum_bbm' =&gt; $this-&gt;input-&gt;post('knsum_bbm',true),
'kps_mesin' =&gt; $this-&gt;input-&gt;post('kps_mesin',true),
'tahun_klr' =&gt; $this-&gt;input-&gt;post('tahun_klr',true),
'tgl_pajak' =&gt; date("Y-m-d H:i", strtotime($this-&gt;input-&gt;post('tgl_pajak',true))),
'asuransi' =&gt; $this-&gt;input-&gt;post('asuransi',true),
'tgl_asuransi' =&gt; date("Y-m-d H:i", strtotime($this-&gt;input-&gt;post('tgl_asuransi',true)))
);
$foto_mobil = NULL;
if (!empty($_FILES["foto_mobil"])) {
$foto_mobil = $this-&gt;_uploadImage();
} else {
$foto_mobil = $this-&gt;input-&gt;post('old_image');
}
$dFormDist['foto_mobil'] = $foto_mobil;
$table = 'ms_mobil';
$field = 'id';
$Msg = $this-&gt;mAjax-&gt;update_($table,$dFormDist,$field,$this-&gt;input-&gt;post('ID',true));
//$Msg = $this-&gt;mAjax-&gt;update_($table,$dFormDist);
header('Content-Type: application/json');
echo json_encode($Msg);
}
</pre>
dari referensi web yang saya dapat diatas menyuruh untuk menambah coding berikut (yang old_image) pada form edit nya:
<pre> <div class="form-group"> <label for="exampleInputFile" class="col-sm-2 control-label">Upload Gambar</label> <input type="file" id="exampleInputFile" name="foto_mobil" class="col-sm-10" > <input type="hidden" id="old_image" name="old_image" value="<?php echo $foto_mobil ?>" /> <div class="invalid-feedback"> <?php echo form_error('foto_mobil') ?> </div> </div> </pre>
sementara pada controller untuk mengeditnya sudah mas kasih tau seperti yang diatas, saya sudah gunakan dan sudah berhasil
<pre> function UpdateMobil(){
$dFormDist = array(
'nmr_polisi' =&gt; $this-&gt;input-&gt;post('nmr_polisi',true),
'merk' =&gt; $this-&gt;input-&gt;post('merk',true),
'tipe' =&gt; $this-&gt;input-&gt;post('tipe',true),
'warna' =&gt; $this-&gt;input-&gt;post('warna',true),
'seat' =&gt; $this-&gt;input-&gt;post('seat',true),
'bbm' =&gt; $this-&gt;input-&gt;post('bbm',true),
'kps_bbm' =&gt; $this-&gt;input-&gt;post('kps_bbm',true),
'knsum_bbm' =&gt; $this-&gt;input-&gt;post('knsum_bbm',true),
'kps_mesin' =&gt; $this-&gt;input-&gt;post('kps_mesin',true),
'tahun_klr' =&gt; $this-&gt;input-&gt;post('tahun_klr',true),
'tgl_pajak' =&gt; date("Y-m-d H:i", strtotime($this-&gt;input-&gt;post('tgl_pajak',true))),
'asuransi' =&gt; $this-&gt;input-&gt;post('asuransi',true),
'tgl_asuransi' =&gt; date("Y-m-d H:i", strtotime($this-&gt;input-&gt;post('tgl_asuransi',true))),
'foto_mobil' =&gt; NULL
//'foto_mobil' =&gt; $this-&gt;_uploadImage()
);
$foto_mobil = NULL;
if (empty($_FILES["foto_mobil"])) {
$foto_mobil = $this-&gt;input-&gt;post('old_image',true);
} else {
$foto_mobil = $this-&gt;_uploadImage();
}
$dFormDist['foto_mobil'] = $foto_mobil;
$table = 'ms_mobil';
$field = 'id';
$Msg = $this-&gt;mAjax-&gt;update_($table,$dFormDist,$field,$this-&gt;input-&gt;post('ID',true));
//$Msg = $this-&gt;mAjax-&gt;update_($table,$dFormDist);
header('Content-Type: application/json');
echo json_encode($Msg);
}
</pre>
dari coding yang mas kasih tau sudah berhasil menginput data dari form edit kedalam database. sekarang yang jadi permasalahan apabila melakukan proses edit (menggunakan form edit) untuk ke 2 kalinya, maka foto akan terhapus? jadi dari old_image yang bertype hidden dari form editnya sudah bisa mengambil nilai (berdasarkan inspect di chrome), tetapi tidak bisa memasukkan nilai tersebut kedalam database. Berikut proses codingan input data ke database di form edit nya mas
<pre>
<form id="Form-Input" class="form-horizontal" method="post" autocomplete="off">
<div class="box-body" id="Area2Print">
<?php
$idpk = (isset($dForm['id'])&&!empty($dForm['id'])?$dForm['id']:"");
$nmr_polisi = (isset($dForm['nmr_polisi'])&&!empty($dForm['nmr_polisi'])?$dForm['nmr_polisi']:"");
$merk = (isset($dForm['merk'])&&!empty($dForm['merk'])?$dForm['merk']:"");
$tipe = (isset($dForm['tipe'])&&!empty($dForm['tipe'])?$dForm['tipe']:"");
$warna = (isset($dForm['warna'])&&!empty($dForm['warna'])?$dForm['warna']:"");
$seat = (isset($dForm['seat'])&&!empty($dForm['seat'])?$dForm['seat']:"");
$bbm = (isset($dForm['bbm'])&&!empty($dForm['bbm'])?$dForm['bbm']:"");
$kps_bbm = (isset($dForm['kps_bbm'])&&!empty($dForm['kps_bbm'])?$dForm['kps_bbm']:"");
$knsum_bbm = (isset($dForm['knsum_bbm'])&&!empty($dForm['knsum_bbm'])?$dForm['knsum_bbm']:"");
$kps_mesin = (isset($dForm['kps_mesin'])&&!empty($dForm['kps_mesin'])?$dForm['kps_mesin']:"");
$tahun_klr = (isset($dForm['tahun_klr'])&&!empty($dForm['tahun_klr'])?$dForm['tahun_klr']:"");
$tgl_pajak = (isset($dForm['tgl_pajak'])&&!empty($dForm['tgl_pajak'])?$dForm['tgl_pajak']:date('d-m-Y'));
$asuransi = (isset($dForm['asuransi'])&&!empty($dForm['asuransi'])?$dForm['asuransi']:"");
$tgl_asuransi = (isset($dForm['tgl_asuransi'])&&!empty($dForm['tgl_asuransi'])?$dForm['tgl_asuransi']:date('d-m-Y'));
$foto_mobil = (isset($dForm['foto_mobil'])&&!empty($dForm['foto_mobil'])?$dForm['foto_mobil']:"");
$old_image = (isset($dForm['foto_mobil'])&&!empty($dForm['foto_mobil'])?$dForm['foto_mobil']:"");
$Tabel = (isset($dTabel)&&!empty($dTabel)?$dTabel:"");
$readonly = ($idpk=="")?"":"readonly";
if ( isset($dForm['id']) && !empty($dForm['id'] )){
$selectvalue =$bbm;
$selectview = $bbm;
}else{
$selectvalue ='';
$selectview ='Silahkan Pilih';
}
//print_r($dForm);
?&gt;
</pre>
untuk $old_image = (isset($dForm['foto_mobil'])&&!empty($dForm['foto_mobil'])?$dForm['foto_mobil']:""); adalah yang saya tambah tetapi masih tidak berhasil memasukkan data kedalam database, kira-kira gimana ya mas?
didalam database nama kolom yang menampung image adalah "foto_mobil". dan kolom old_image tidak ada didalam database, sehingga bagaimanakah logika untuk memasukkan nilai dari old_image kedalam kolom foto_mobil yang ada didalam database nya mas?
alhamdulillah, saya sudah mendapatkan jawaban nya mas
<pre> function _uploadImage() { $config['upload_path'] = './uploads/'; $config['allowed_types'] = 'gif|jpg|png'; //$config['remove_space'] = TRUE; $config['max_size'] = '1024'; $config['max_width'] = '6000'; $config['max_height'] = '6000'; $config['overwrite'] = true;
$this-&gt;load-&gt;library('upload', $config);
if ($this-&gt;upload-&gt;do_upload('foto_mobil')) {
return $this-&gt;upload-&gt;data("file_name");
}
return $this->input->post('old_image',true); } </pre>
saya ubah kondisi return yang terakhirnya ke old_image :D
sekarang yang saya bingung adalah masalah function delete nya mas, kira-kira klo dimasukin kedalam coding yang saya punya bagaimana ya? berikut coding dari web referensi nya:
<pre> private function _deleteImage($id) { $product = $this->getById($id); if ($product->image != "default.jpg") { $filename = explode(".", $product->image)[0]; return array_map('unlink', glob(FCPATH."upload/product/$filename.*")); } } </pre>
saya tidak menggunakan $filename $product->image berubah menjadi 'foto_mobil'
dan berikut adalah function delete di coding saya:
<pre> function Delete(){ $ID = $this->input->post('ID'); $prefix = $this->input->post('prefix');
switch ($prefix) {
case 'dosen':
$table = 'ms_dosen';
$field = 'id';
break;
case 'supir':
$table = 'ms_supir';
$field = 'id';
break;
case 'security':
$table = 'ms_security';
$field = 'id';
break;
case 'pudir':
$table = 'ms_pudir';
$field = 'id';
break;
case 'mobil':
$table = 'ms_mobil';
$field = 'id';
break;
case 'wilayah':
$table = 'ms_wilayah';
$field = 'id';
break;
}
$Msg = $this-&gt;mAjax-&gt;delete_($table,$field,$ID);
header('Content-Type: application/json');
echo json_encode($Msg);
}
</pre>
dari coding saya diatas yang mau diolah untuk dihapus adalah coding berikut mas
<pre> case 'mobil': $table = 'ms_mobil'; $field = 'id'; break; </pre>